0

リストビューを含むページがあります。リストビューにはラベルとドロップダウンリストがあります。ddlTags_Init() メソッドからラベルのテキストにアクセスしたいと思います。コード:

<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1" 
        DataKeyNames="id_Image" onitemdatabound="ListView1_ItemDataBound">
        <ItemTemplate>
             <asp:Label ID="TagsLabel" runat="server" Text='<%# Eval("Tags") %>' />
             <asp:DropDownList ID="ddlTags" runat="server" OnInit="ddlTags_Init" >
             </asp:DropDownList>
        </ItemTemplate>
</asp:ListView>

コードビハインド:

protected void ddlTags_Init(object sender, EventArgs e)
{
       DropDownList ddlTags = (DropDownList)sender;
       Label lblTag = (Label)ddlTags.Parent.FindControl("TagsLabel");
       string text=lblTag.Text;
}

現時点で私は立ち往生しています

Label lblTag = (Label)ddlTags.Parent.FindControl("TagsLabel");

誰が私が欠けているか知っていますか? ありがとう、ジム

4

2 に答える 2

0

ラベルのバインド値を取得するには初期化が早すぎます。つまり、ラベル値はまだバインドされていません。

代わりに、ItemDataBoundメソッドの使用を検討することをお勧めします。

<asp:ListView ID="ListView1" runat="server" 
     OnItemDataBound="ListView1_ItemDataBound" ...>
  ....
</asp:ListView>

protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        var ddlTags = e.Item.FindControl("ddlTags") as DropDownList;
        var tagsLabel = e.Item.FindControl("TagsLabel") as Label;
    }
}
于 2013-07-30T18:48:16.953 に答える
0

リストビュー データソースに複数の要素があると仮定すると、コードを ItemDataBound ハンドラーに入れてみませんか? うまくいくはずだと思います。

于 2013-07-30T18:23:39.597 に答える