2009-06-16 18 views
2

私はリストビューを持っています。私のリストビューでは、コードビハインドページに記入したいドロップダウンボックスがあります。唯一のことは、私はこのwebcontrolにアクセスする方法がわかりません。以下では動作しません:C#リストビューのドロップダウンボックスにアクセスするには?

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

私はドロップダウンリストは、リストビュー(私は、インデックス1を試したときにも、私は範囲の例外のうちのインデックスを取得)上の唯一のコントロールであるため、インデックスが0である知っています。

誰かがドロップダウンリストにどのようにアクセスできるか教えていただけますか?私のページビハインドでは、私はlistitemsを追加したい。

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())); 
    } 
} 
+0

あなたはASPXページの完全なコードを表示できますか...または私に電子メールで送信できます..問題を作成しているASPXページに何かがあると思いますか? –

答えて

1

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

DropDownList ddlRole = sender as DropDownList; 
+0

Thnx。余分なパラメータを送信することは可能ですか? eventArgsが余分なプロパティを取得するようになるのでしょうか?次のようなものがあります:そしてloadイベントのコードビハインド:e.id – Martijn

0

この試してみてください。これは、リストビューでレンダリングされている場合は

DropDownList ddl = (DropDownList)lvUserOverview.FindControl("NameOfDropDownList"); 
+0

私のドロップダウンリストのIDはddlRoleに設定されています。 DropDownListを使用すると、ddl =(DropDownList)lvUserOverview.FindControl( "ddlRole");それは動作しません。 – Martijn

+0

ListViewのASPXコードを投稿してください。おそらく問題があります。 –

+0

私のスタートポストを参照 – Martijn

2

は、複数のDropDownListsが起こっている可能性がありますインスタンス化するにはそれぞれ固有のIDを取得し、Matthewのアプローチを使用することはできません。

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

1つしか作成していないのなら、なぜそれがListViewにあるのですか?

+0

私のスタートポストを参照 – Martijn

0

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

関連する問題