下拉列表中的商店 ID
Store ID from a dropdown list
我已经研究了一段时间,但似乎无法解决这个问题。所以我有一个名为 ddStudent 的下拉列表,其中 textField 值来自 sql table 我从名为 'firstName' 的列中创建了名为“Student”的列表。现在我使用 'studentID' 作为值字段。
这是我遇到问题的地方。我想执行以 studentID 作为参数的存储过程,但我不明白如何将实际的学生 ID 存储到参数中。
这是我目前所拥有的-
protected void btnRegister_Click(object sender, EventArgs e)
{
int selValClass = Convert.ToInt32(ddClassNames.SelectedValue);
int selValStudent = Convert.ToInt32(ddStudents.SelectedValue);
using (SqlConnection con = new SqlConnection(CS))
{
SqlCommand cmd = new SqlCommand("procRegStudent", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@studentID", selValStudent);
cmd.Parameters.AddWithValue("@classID", selValClass);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
这是我的数据绑定代码-
using (SqlConnection con = new SqlConnection(CS))
{
SqlCommand cmd = new SqlCommand("SELECT studentID, firstName, lastName, ssn, address, city, state, zip FROM Student ", con);
con.Open();
ddStudents.DataSource = cmd.ExecuteReader();
ddStudents.DataTextField = "firstName";
ddStudents.DataValueField = "studentID";
ddStudents.DataBind();
}
现在我的问题是,当我 select 时,有没有一种方法可以存储下拉列表中的实际学生 ID?出于某种原因,当我这样做时,页面会重新加载并且 select 是我没有 select 的学生的第一个学生 ID。我不太确定发生了什么。
谢谢。
编辑-
我想确认一下-
我的学生下拉列表中有 3 名学生。当我 select 学生 3(学生 ID 为 3)时,下拉列表中的第一个学生被作为参数传递,我不知道为什么。
这个问题对于 Dropdownlist 控件来说是合乎逻辑的,因为当它从 server.The 返回时,您的下拉列表缺少要呈现的默认项 解决方案非常简单,您应该添加一个默认列表项作为默认值页面加载
这里我做了一个简单的例子来说明我们如何解决这个问题:
在Page.aspx:
<asp:DropDownList ID="ddStudents" runat="server" DataTextField = "firstName" DataValueField = "studentID" AppendDataBoundItems="true">
<asp:ListItem Text="===Select Student===" Value="0"></asp:ListItem>
</asp:DropDownList>
<asp:Button ID="btnRegister" runat="server" Text="Register" OnClick="btnRegister_Click" />
<asp:Label ID="lblMessage" runat="server" Text="Label"></asp:Label>
在Page.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindDropDown();
}
}
private void BindDropDown()
{
DataTable dt = new DataTable();
dt.Columns.Add("studentID", typeof(int));
dt.Columns.Add("firstName", typeof(string));
dt.Rows.Add(dt.NewRow());
dt.Rows[0]["studentID"] = 1;
dt.Rows[0]["firstName"] = "Markus";
dt.Rows.Add(dt.NewRow());
dt.Rows[1]["studentID"] = 2;
dt.Rows[1]["firstName"] = "Arthur";
ddStudents.DataSource = dt;
ddStudents.DataBind();
}
protected void btnRegister_Click(object sender, EventArgs e)
{
if (ddStudents.SelectedIndex > 0)
{
lblMessage.Text = String.Format("You selected {0} with Number : {1}", ddStudents.SelectedItem.Text,ddStudents.SelectedValue);
}
}
提示: 我将下拉列表 AppendDataBoundItems 属性 标记为 true 只是告诉下拉列表在数据绑定时包含默认列表项..
希望我的代码能帮助您解决问题:)
试试这个
int selValStudent = int.Parse(this.ddStudents.SelectedValue);
然后把你的
绑定下拉();
进入你的回传
我已经研究了一段时间,但似乎无法解决这个问题。所以我有一个名为 ddStudent 的下拉列表,其中 textField 值来自 sql table 我从名为 'firstName' 的列中创建了名为“Student”的列表。现在我使用 'studentID' 作为值字段。
这是我遇到问题的地方。我想执行以 studentID 作为参数的存储过程,但我不明白如何将实际的学生 ID 存储到参数中。
这是我目前所拥有的-
protected void btnRegister_Click(object sender, EventArgs e)
{
int selValClass = Convert.ToInt32(ddClassNames.SelectedValue);
int selValStudent = Convert.ToInt32(ddStudents.SelectedValue);
using (SqlConnection con = new SqlConnection(CS))
{
SqlCommand cmd = new SqlCommand("procRegStudent", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@studentID", selValStudent);
cmd.Parameters.AddWithValue("@classID", selValClass);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
这是我的数据绑定代码-
using (SqlConnection con = new SqlConnection(CS))
{
SqlCommand cmd = new SqlCommand("SELECT studentID, firstName, lastName, ssn, address, city, state, zip FROM Student ", con);
con.Open();
ddStudents.DataSource = cmd.ExecuteReader();
ddStudents.DataTextField = "firstName";
ddStudents.DataValueField = "studentID";
ddStudents.DataBind();
}
现在我的问题是,当我 select 时,有没有一种方法可以存储下拉列表中的实际学生 ID?出于某种原因,当我这样做时,页面会重新加载并且 select 是我没有 select 的学生的第一个学生 ID。我不太确定发生了什么。
谢谢。
编辑-
我想确认一下-
我的学生下拉列表中有 3 名学生。当我 select 学生 3(学生 ID 为 3)时,下拉列表中的第一个学生被作为参数传递,我不知道为什么。
这个问题对于 Dropdownlist 控件来说是合乎逻辑的,因为当它从 server.The 返回时,您的下拉列表缺少要呈现的默认项 解决方案非常简单,您应该添加一个默认列表项作为默认值页面加载
这里我做了一个简单的例子来说明我们如何解决这个问题:
在Page.aspx:
<asp:DropDownList ID="ddStudents" runat="server" DataTextField = "firstName" DataValueField = "studentID" AppendDataBoundItems="true"> <asp:ListItem Text="===Select Student===" Value="0"></asp:ListItem> </asp:DropDownList> <asp:Button ID="btnRegister" runat="server" Text="Register" OnClick="btnRegister_Click" /> <asp:Label ID="lblMessage" runat="server" Text="Label"></asp:Label>
在Page.aspx.cs:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindDropDown(); } } private void BindDropDown() { DataTable dt = new DataTable(); dt.Columns.Add("studentID", typeof(int)); dt.Columns.Add("firstName", typeof(string)); dt.Rows.Add(dt.NewRow()); dt.Rows[0]["studentID"] = 1; dt.Rows[0]["firstName"] = "Markus"; dt.Rows.Add(dt.NewRow()); dt.Rows[1]["studentID"] = 2; dt.Rows[1]["firstName"] = "Arthur"; ddStudents.DataSource = dt; ddStudents.DataBind(); } protected void btnRegister_Click(object sender, EventArgs e) { if (ddStudents.SelectedIndex > 0) { lblMessage.Text = String.Format("You selected {0} with Number : {1}", ddStudents.SelectedItem.Text,ddStudents.SelectedValue); } }
提示: 我将下拉列表 AppendDataBoundItems 属性 标记为 true 只是告诉下拉列表在数据绑定时包含默认列表项..
希望我的代码能帮助您解决问题:)
试试这个
int selValStudent = int.Parse(this.ddStudents.SelectedValue);
然后把你的
绑定下拉();
进入你的回传