C# GridView FindControl HTML 无序列表

本文关键字:无序 列表 HTML FindControl GridView | 更新日期: 2023-09-27 18:35:39

我想在我的GridView中找到一个unordered list,以便我可以根据条件隐藏它。但是,我不知道该如何铸造该对象。使用HtmlGenericControl似乎不起作用。我收到Object reference not set to an instance of an object错误。

标记:

<asp:GridView ID="myGV" runat="server">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox ID="myCb" runat="server" Text='Hi'/>
                <ul id="myUnorderedList" runat="server" Visible="True">
                    <li>
                        <asp:TextBox ID="myTb" runat="server" Width="300" />
                    </li>
                </ul>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

C#:

foreach (GridViewRow row in myGV.Rows)
{
    if (Some Condition)
    {
        //works bc properly casted to CheckBox
        ((CheckBox) row.FindControl("myCb")).Visible = false; 
        //Does not work. What to cast this to?
        ((System.Web.UI.HtmlControls.HtmlGenericControl) row.FindControl("myUnorderedList")).Visible = false;
    }
}

C# GridView FindControl HTML 无序列表

System.Web.UI.HtmlControls.HtmlGenericControlul 的正确转换。

此外,您甚至不需要强制转换为 HtmlGenericControl,因为 VisibleSystem.Web.UI.Control 的属性,所有 Web 控件都继承自该属性。

你只需要以下代码 -

(row.FindControl("myUnorderedList")).Visible = false;