如何在ASP.NET C#中获取dropdownlist的DataValue



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

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

我想要的是在dopdown中列出课程,我成功了,但我不能做的是,当我从下拉列表中选择课程时,应该在HiddenField/textbox/label 中选择课程ID

如何进行

这是我尝试过的一个代码::

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中,我正在页面加载方法中获取值

我还尝试了dropdownlistrongelected中的索引更改方法来选择课程ID

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

我做错了什么???

在页面_加载中更新下拉列表之前,放置一块if (!IsPostBack)问题是,在触发DropDownList1_SelectedIndexChanged事件后,您的代码将重新填充下拉菜单。

这将向服务器发出post请求,他将运行附加到IndexChange事件的DropDownList1_SelectedIndexChanged功能,然后运行page_load

因为该页面假定要再次加载并且将导致一个新的选定值,该值将不是您期望的值。

还有一件事:当从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();
    }
    }        
}

试试这个上面的代码你手动添加项目到下拉列表,所以你必须添加数据值以及

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

最新更新