C#リストビューでドロップダウンボックスにアクセスするには?
-
05-07-2019 - |
質問
リストビューがあります。私のリストビューには、コードビハインドページに入力するドロップダウンボックスがあります。唯一のことは、このwebcontrolにアクセスする方法がわかりません。以下は機能しません:
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()));
}
}
解決
独自のLoadイベントハンドラー内のドロップダウンリストへのハンドルを取得するには、送信者をDropDownListとしてキャストするだけです。
DropDownList ddlRole = sender as DropDownList;
他のヒント
これがListViewでレンダリングされている場合、複数のDropDownListがインスタンス化される可能性があり、それぞれが一意のIDを取得し、Matthewのアプローチを使用できなくなります。
ItemDataBoundイベントを使用してe.Item.FindControl(&quot; NameOfDropDownList&quot;)にアクセスすると、作成された各ドロップダウンを繰り返すことができます。
作成するのが1つだけの場合...なぜListViewにあるのですか?
これを試してください:
DropDownList ddl = (DropDownList)lvUserOverview.FindControl("NameOfDropDownList");
コントロールがデータバインドされている場合は、データバインド後に子孫にアクセスしてください。また、その行の前にデバッガでオブジェクトを検査することもできます。
所属していません StackOverflow