0

i have a problem as subject said.

i have a Table courses in sql server Fields are courseID and course.

what i want is list the course in dopdown and i succeeeded but what i'm not able to do is when i select a course from dropdown list, a courseID should be selected in HiddenField/textbox/label

how to do that

here is a code i tried::

protected void Page_Load(object sender, EventArgs e)
{
    string select = "select * from courses";
    DropDownList1.Items.Add("-- Select Course --");
    DropDownList1.SelectedIndex = 0;
    DataTable dt = con.select_command(select);
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        DropDownList1.Items.Add(dt.Rows[i][1].ToString());
        DropDownList1.DataValueField = dt.Rows[i][0].ToString();
        DropDownList1.DataTextField = dt.Rows[i][1].ToString();
    }        

}

in dropdownlist i'm getting values in Page Load method

i also tried dropdownlist_selectedindex change method too to select courseID

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    LLabel1.Text = DropDownList1.SelectedValue.ToString();
}

what i'm doing wrong ???

4

2 に答える 2

0

ドロップダウンリストにアイテムを手動で追加する上記のコードを試して、データ値と同様にデータ値を追加する必要があります

      protected void Page_Load(object sender, EventArgs e)
        {
          if(!Ispostback)
            {
            string select = "select * from courses";
            DropDownList1.Items.Add("-- Select Course --","0");

            DataTable dt = con.select_command(select);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DropDownList1.Items.Add(new listitem(dt.Rows[i][1].ToString(),dt.Rows[i][0].ToString();
        ));

            }        
                DropDownList1.SelectedIndex = 0;
        }
  }

および選択したインデックス変更イベント

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    LLabel1.Text = DropDownList1.SelectedValue.ToString();
}
于 2012-09-13T12:43:29.323 に答える
0

page_load でドロップダウンを更新する前にのブロックを配置 します 問題は、イベントがトリガーさif (!IsPostBack)れた後に、コードがドロップダウン メニューを再設定することです。DropDownList1_SelectedIndexChanged

これにより、サーバーへのポスト リクエストが作成され、イベントに DropDownList1_SelectedIndexChanged関連付けられた関数が実行されます。IndexChangepage_load

ページが再度読み込まれることを前提としており、期待した値とは異なる新しい値が選択されるためです。

もう 1 つ: DataTable の Row から値を取得するときに文字列識別子を使用すると、コードがより使いやすくなります。(読みやすさは非常に重要です...)

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
    string select = "select * from courses";
    DropDownList1.Items.Add("-- Select Course --");
    DropDownList1.SelectedIndex = 0;
    DataTable dt = con.select_command(select);
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        DropDownList1.Items.Add(dt.Rows[i]["CourseName"].ToString());
        DropDownList1.DataValueField = dt.Rows[i]["CourseID"].ToString();
        DropDownList1.DataTextField = dt.Rows[i]["CourseName"].ToString();
    }
    }        

}
于 2012-09-13T12:40:36.730 に答える