読者です 読者をやめる 読者になる 読者になる

FOR SE

文系の学部から新卒でメーカー系のSIerに就職。技術・スキルがないためブログを通して勉強。その後、IT業界の業界知識が活かせる人材業界に就職

このエントリーをはてなブックマークに追加

【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>
.hatena-module:nth-of-type(10) { background: transparent; } .hatena-module:nth-of-type(10) .hatena-module-title{ display: none; } .hatena-module:nth-of-type(10) .hatena-module-body { padding: 0; }