0

正如主题所说,我有一个问题。

我在 sql server 中有一个表课程字段是 courseID 和 course。

我想要的是在下拉列表中列出课程并且我成功但我无法做的是当我从下拉列表中选择课程时,应该在 HiddenField/textbox/label 中选择 courseID

怎么做

这是我尝试过的代码::

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

}

在下拉列表中,我在页面加载方法中获取值

我也尝试了 dropdownlist_selectedindex 更改方法来选择 courseID

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

我做错了什么???

4

2 回答 2

0

在更新 page_load 中的下拉菜单之前放置​​一个块 问题是您的代码将在触发事件if (!IsPostBack)后重新填充下拉菜单。DropDownList1_SelectedIndexChanged

这将向服务器发出一个发布请求,他将运行DropDownList1_SelectedIndexChanged附加到IndexChange事件的函数,然后 page_load

因为页面假设要再次加载,并且会产生一个新的选定值,这不是您所期望的。

还有一件事:在从 DataTable 的行中获取值时使用字符串标识符,这样代码会更加友好。(可读性很重要...)

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 回答
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 回答