如何从复选框列表中插入多个值

本文关键字:插入 列表 复选框 | 更新日期: 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