正如主题所说,我有一个问题。
我在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();
}