C# 在运行时查找数据列表中存在的Div

C# 在运行时查找数据列表中存在的Div,c#,asp.net,.net,datalist,C#,Asp.net,.net,Datalist,我需要从c#中的代码隐藏文件中找到属于我当前单击的链接按钮的div。然后,我需要为该div应用该类。到目前为止,我尝试通过html表单元格进行访问。但我无法访问我的div。因此,请提供任何有价值的建议来查找div <asp:DataList ID="DataList1" runat="server" OnItemCommand="DataList1_ItemCommand" style="width:100%"> <ItemTem

我需要从c#中的代码隐藏文件中找到属于我当前单击的链接按钮的div。然后,我需要为该div应用该类。到目前为止,我尝试通过html表单元格进行访问。但我无法访问我的div。因此,请提供任何有价值的建议来查找div

<asp:DataList ID="DataList1" runat="server" OnItemCommand="DataList1_ItemCommand" style="width:100%">
                        <ItemTemplate>
                            <div runat="server" id="DivContent" style="padding-top: 25px; height: 65px;"  align="center"
                                onmouseover="this.className='MsgClick'" onmouseout="this.className=''" >
                                <asp:LinkButton ID="LinkButton2" runat="server" Text='<%# Eval("UserName") %>' CommandName="show"
                                    class="InnerMenuFont"></asp:LinkButton>
                                <asp:Label ID="Label1" runat="server" Text='<%# Eval("AdminId") %>' Visible="False"></asp:Label>
                                <br />
                            </div>
                            <hr style="width: 80%" /> 

                        </ItemTemplate>
                    </asp:DataList>

上面的代码是我的类文件。

可能是错误的,但我认为如果div是数据绑定控件(DataList、GridView等)的一部分,即使您设置了runat=“server”,也不可能从代码隐藏中访问div

但是,您可以将div替换为asp:Panel,当页面被提供给浏览器时,该面板将作为div呈现。e、 g

<asp:Panel ID="DivContent" runat="server">
    div content... LinkButton, Label etc...
</asp:Panel>
然后,您应该能够在后面的代码中更改样式设置。 您可以使用CssClass属性更改所需内容:

...
Panel currentPanel = (Panel)DataList1.Items[itemIndex].FindControl("DivContent");
currentPanel.CssClass = "NewClassName";

这可能是错误的,但我认为如果div是数据绑定控件(DataList、GridView等)的一部分,即使您设置了runat=“server”,也不可能从代码隐藏访问div

但是,您可以将div替换为asp:Panel,当页面被提供给浏览器时,该面板将作为div呈现。e、 g

<asp:Panel ID="DivContent" runat="server">
    div content... LinkButton, Label etc...
</asp:Panel>
然后,您应该能够在后面的代码中更改样式设置。 您可以使用CssClass属性更改所需内容:

...
Panel currentPanel = (Panel)DataList1.Items[itemIndex].FindControl("DivContent");
currentPanel.CssClass = "NewClassName";

我自己做的很好,先生。有一个更简单的解决方案

从您的c#代码后面,div将被判定为as type
HtmlGenericControl

您需要向DataList控件标记中添加一个
onitemdatabound=“DataList1\u ItemDataBound”

在itemdatabound事件中,可以修改div

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");

}

我自己做的很好,先生。有一个更简单的解决方案

从您的c#代码后面,div将被判定为as type
HtmlGenericControl

您需要向DataList控件标记中添加一个
onitemdatabound=“DataList1\u ItemDataBound”

在itemdatabound事件中,可以修改div

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");

}
使用下面的代码

Control objDiv = e.Item.FindControl("DivContent");
希望它能帮助你使用下面的代码

Control objDiv = e.Item.FindControl("DivContent");

希望它能帮助你

这对你有帮助吗?@Freebird:ya但我需要访问div。div需要代码隐藏文件中的程序集引用。但标签是asp:control。这是我在挣扎。你说你的div需要汇编引用是什么意思?请考虑你引用的代码。在这种情况下,标签在键入时变为蓝色。因为它是一个asp控件。但是div不是asp控件na?好的,您希望在什么事件上访问div?这对你有帮助吗?@Freebird:ya但我需要访问div。div需要代码隐藏文件中的程序集引用。但标签是asp:control。这是我在挣扎。你说你的div需要汇编引用是什么意思?请考虑你引用的代码。在这种情况下,标签在键入时变为蓝色。因为它是一个asp控件。但是div不是asp控件吗?好的,在什么情况下您想访问您的div?div可以从c#codebehind引用为HtmlGenericControl,只要它有一个ID和runat=“server”div可以从c#codebehind引用为HtmlGenericControl,只要它有一个ID和runat=“server”