C# GridView FindControl HTML неупорядоченный список

Я хочу найти unordered list внутри моего GridView так что я могу скрыть это на основе условия. Я не знаю, что бросить объект, как бы то ни было. С помощью 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;
    }
}

1 ответ

Решение

System.Web.UI.HtmlControls.HtmlGenericControl - правильное приведение для ul.

Кроме того, вам даже не нужно приводить к HtmlGenericControl, поскольку Visible является свойством System.Web.UI.Control, от которого унаследованы все веб-элементы управления.

Вам просто нужен следующий код -

(row.FindControl("myUnorderedList")).Visible = false;
Другие вопросы по тегам