1

我需要从 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>

在上面的代码中,我需要访问 id "DivContent" 中的当前 div

.MsgClick
        {
            background-image: url('Images/AdminHighlight.png');
            background-repeat: no-repeat;
            vertical-align: top;
            margin-right: -38px;
            padding-right: 30px;
        }

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

4

3 回答 3

1

使用下面的代码

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

希望对你有帮助

于 2013-09-23T18:54:26.710 回答
0

可能是错误的,但我不相信如果 div 是数据绑定控件(DataList、GridView 等)的一部分,即使您设置了 runat="server",也无法从代码中访问 div。

但是,您可以将 div 换成 asp:Panel - 当页面提供给浏览器时,它会呈现为 div。例如

<asp:Panel ID="DivContent" runat="server">
    div content... LinkButton, Label etc...
</asp:Panel>

点击 LinkBut​​ton 后,您可以使用 LinkBut​​ton 所属的 DataList 的项目索引在后面的代码中找到 asp:Panel:

LinkBut​​ton OnClick 事件:

protected void LinkButton2_Click(object sender, EventArgs e)
{
    // Get the Link Button which has been clicked.
    LinkButton btn = (LinkButton)sender;
    // Get the DataListItem in the DataList which contains the LinkButton which was clicked.
    DataListItem listItem = (DataListItem)btn.NamingContainer;
    // Get the ItemIndex of the DataListItem.
    int itemIndex = listItem.ItemIndex;
    // Find the asp:Panel in the DataListItem of the DataList (e.g. DataList1).
    Panel currentPanel = (Panel)DataList1.Items[itemIndex].FindControl("DivContent");
}

然后,您应该希望能够在后面的代码中更改样式设置。您可以使用 CssClass 属性来更改您需要的内容:

...
Panel currentPanel = (Panel)DataList1.Items[itemIndex].FindControl("DivContent");
currentPanel.CssClass = "NewClassName";
于 2012-08-12T13:23:37.137 回答
0

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

从后面的 c# 代码中, div 将被称为 type HtmlGenericControl

您需要向onitemdatabound="DataList1_ItemDataBound"DataList 控件标记添加一个。

在您的 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");

}
于 2013-05-08T17:16:32.310 回答