【ASP.NET・C#】動的にListItemを作成する
【今回の紹介】
listboxにDBから取得した値でリストを作る
【内容】
listboxのlistItemを動的に生成する際のメモ
1.cs側のイベントハンドラを設定する場合は、AutoPostBackの設定(true)に注意
動的にlistItemを生成するイベントをサーバ側で受け取るには、cs側でリストが変化したかを判断する必要があるので、
選択した値から、さらにDBに問い合わせを行ってなにか処理をする場合は、csの処理へ
選択していない場合のエラーチェックなんかは、CSに書く必要性はなく、クライアントでjavascriptなどを読み込ませればよい。
【参考ソース】
string dbcn = ConfigurationManager.AppSettings["con.str"]; //sqlの設定 StringBuilder strb = new StringBuilder(); strb.Append("select "); strb.Append(" ID "); strb.Append(" ,NAME "); strb.Append(" from table "); //datatableを設定 テーブルのデータをいれる箱 DataTable dt = new DataTable(); //テーブルからデータを取得してきてくれるdatatableを取得 テーブルから接続情報と抽出条件をもとにデータを取得するポンプ SqlDataAdapter da = new SqlDataAdapter(strb.ToString(), dbcn); //sqlを実行し、結果をdatatableに格納する da.Fill(dt); foreach (DataRow dr in dt.Rows) { ListItem li = new ListItem(); li.Value = dr["ID"].ToString(); li.Text = dr["NAME"].ToString(); ListBox1.Items.Add(li); } protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) { Debug.WriteLine("aa"); }
<form id="form1" runat="server"> <div> <asp:ListBox ID="ListBox1" runat="server" SelectionMode ="Single" AutoPostBack="true" OnSelectedIndexChanged="ListBox1_SelectedIndexChanged1" ></asp:ListBox> </div> </form>