如何从复选框列表中插入多个值
本文关键字:插入 列表 复选框 | 更新日期: 2023-09-27 18:19:32
我有一个CheckBoxList控件和更新按钮:
<asp:CheckBoxList ID="moduleselect" runat="server" DataSourceID="semester2" DataTextField="module_name" DataValueField="module_id"></asp:CheckBoxList>
<br />
<asp:Button ID="uploadbutton" runat="server" Text="Choose Modules" OnClick="uploadbutton_Click" CssClass="submitbtn" />
<asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Cancel" CssClass="submitbtn" />
这包含一个供学生选择的模块列表,当点击上传按钮时,它应该会更新数据库表。
我有以下C#
public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
String name = Request.QueryString["studentno"];
username.Text = name;
}
protected void uploadbutton_Click(object sender, EventArgs e)
{
String user = username.Text;
string ConnectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection myConnection = new SqlConnection(ConnectionString);
myConnection.Open();
int count = moduleselect.Items.Count;
for (int i = 0; i < count; i++)
{
if (moduleselect.Items[i].Selected)
{
string value = moduleselect.Items[i].Value;
String query = "INSERT INTO students_vs_modules (student_no, module_id) VALUES (@student_no, @module_id)";
SqlCommand myCommand = new SqlCommand(query, myConnection);
myCommand.Parameters.AddWithValue("@student_no", user);
myCommand.Parameters.AddWithValue("@module_id", value);
myCommand.ExecuteNonQuery();
myConnection.Close();
}
}
}
}
然而,当我在点击上传按钮时选择了一些模块时,它只会更新所选的初始选项,而不是所有模块。我对网络开发还很陌生,所以如果有任何帮助,我们将不胜感激。
首先需要循环来获取checkbox
的检查值。使用SelectedValue
只会得到第一个value
你的selected
例如,根据以下
int count = moduleselect.Items.Count;
for(int i = 0; i < count; i++)
{
if (moduleselect.Items[i].Selected)
{
string value = moduleselect.Items[i].Value;
// Do Insert
}
}
这将插入许多具有不同模块的行。。
如果您想添加1行并用分隔,
根据以下
int count = moduleselect.Items.Count;
string value = string.Empty;
for(int i = 0; i < count; i++)
{
if (moduleselect.Items[i].Selected)
{
value = moduleselect.Items[i].Value + ",";
}
}
// Trim the last ,
value = value.TrimEnd(',');
// Insert here