如何在代码隐藏中访问aspx控件

本文关键字:访问 aspx 控件 隐藏 代码 | 更新日期: 2023-09-27 18:30:05

NET。我正在尝试访问SeparatorTemplate中代码后面的div标记这是我的aspx代码

<div>
    <asp:DataList ID="DataList1" runat="server">
        <ItemStyle ForeColor="#4A3C8C" BackColor="#E7E7FF"></ItemStyle>
        <HeaderTemplate>
            <table width="900px">
                <tr>
                    <td width="300px">
                        <b>Name</b>
                    </td>
                    <td width="300px">
                        <b>Account No</b>
                    </td>
                    <td width="300px">
                        <b>Company</b>
                    </td>
                </tr>
            </table>
        </HeaderTemplate>
        <ItemTemplate>
            <table width="900px">
                <tr>
                    <td align="left" width="300px">
                        <%# DataBinder.Eval(Container.DataItem, "Name")%>
                    </td>
                    <td align="left" width="300px">
                        <%# DataBinder.Eval(Container.DataItem, "AccountNo")%>
                    </td>
                    <td align="left" width="300px">
                        <%# DataBinder.Eval(Container.DataItem, "Company")%>
                    </td>
                </tr>
            </table>
        </ItemTemplate>
        <HeaderStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#4A3C8C"></HeaderStyle>
        <SeparatorTemplate>
            <div id="divSeprator" runat="server">//This div tag i want to access in the code behind  
            <br />
            </div>
        </SeparatorTemplate>
    </asp:DataList>
</div>

我已经尝试访问this.ControlsDataList1.Controls,但这两个都不包含这个div。我知道它在SepratorTemplate中,但我不知道如何从该模板访问控件,因为找不到控件。

如何在代码隐藏中访问aspx控件

protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
    // Find the div control as htmlgenericcontrol type, if found apply style
    System.Web.UI.HtmlControls.HtmlGenericControl div =  (System.Web.UI.HtmlControls.HtmlGenericControl)e.Item.FindControl("DivContent");
    if(div != null)
        div.Style.Add("border-color", "Red");
}

您需要从数据列表行中找到它,如下所示。

HtmlGenericControl div = (HtmlGenericControl)yourDataList.Items[0].FindControl("dvSeparator");

您可以在.Items[]中传递数据列表项(行)的索引,以便查找要处理的div。

如果你想处理来自所有数据列表项目的div,那么你可以在数据列表的项目数据绑定事件中进行处理,正如@Upvote MarkAnswer在他的回答中所建议的那样。

HtmlGenericControl divSeprator = (HtmlGenericControl)DataList1.Items[0].FindControl("divSeprator");

其中0是您的物品索引。

或者只绑定DataList1_ItemDataBoud事件并使用:

if(e.Item.ItemType == ListItemType.Separator)
   HtmlGenericControl divSeprator = (HtmlGenericControl)e.Item.FindControl("divSeprator");

您需要使标签runat="server"并给它id

<div id="div" runat="server">

然后你可以使用访问它

HtmlGenericControl div = HtmlGenericControl("div")