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

これを自分でやっただけです。もっと簡単な解決策があります!

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 に答える
0

間違っているかもしれませんが、runat="server" が設定されていても、div がデータ バインド コントロール (DataList、GridView など) の一部である場合、コード ビハインドから 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 に答える