2

リストビューがあります。私のリストビューには、分離コードページに入力したいドロップダウンボックスがあります。ただ、この Web コントロールにアクセスする方法がわかりません。以下は機能しません。

DropDownList ddl = (DropDownList)lvUserOverview.Controls[0];

ドロップダウンリストがリストビューの唯一のコントロールであるため、インデックスが0であることはわかっています(また、インデックス1を試すと、範囲外の例外が発生します)。

ドロップダウンリストにアクセスする方法を教えてもらえますか? 後ろのページにリストアイテムを追加したいと思います。

ASPX コード :

<asp:DropDownList ID="ddlRole" onload="ddlRole_Load" runat="server">
</asp:DropDownList>

コードビハインド:

protected void ddlRole_Load(object sender, EventArgs e)
{
  DropDownList ddl = (DropDownList)lvUserOverview.FindControl("ddlRole");
  if (ddl != null)
  {
      foreach (Role role in roles)
          ddl.Items.Add(new ListItem(role.Description, role.Id.ToString()));
  }
}
4

4 に答える 4

2

これが ListView でレンダリングされている場合、複数の DropDownLists がインスタンス化される可能性があり、それぞれが一意の ID を取得し、マシューのアプローチを使用できなくなります。

ItemDataBound イベントを使用して e.Item.FindControl("NameOfDropDownList") にアクセスすると、作成された各ドロップダウンを反復処理できるようになります。

1つだけ作成している場合...なぜListViewにあるのですか?

于 2009-06-16T13:49:37.457 に答える
1

独自の Load イベント ハンドラー内のドロップダウン リストへのハンドルを取得するには、sender を DropDownList としてキャストするだけです。

DropDownList ddlRole = sender as DropDownList;
于 2009-06-16T16:27:22.617 に答える
0

これを試して:

DropDownList ddl = (DropDownList)lvUserOverview.FindControl("NameOfDropDownList");
于 2009-06-16T13:42:17.300 に答える
0

コントロールがデータ バインドされている場合は、データ バインド後にその子孫にアクセスするようにしてください。また、その行の前にデバッガーでオブジェクトを検査するのに役立つ場合もあります。

于 2009-06-16T13:50:30.093 に答える