首页 > 解决方案 > 将多个选定的列表框项目插入 SQL 表中的同一单元格

问题描述

我想将多个列表框项目插入到 SQL 表中的一个单元格中,并用逗号分隔项目。下面发布的代码只会在列表框中添加第一个选定的项目。因此,如果您选择 2 或 10 个项目,您选择的第一个项目将被插入到表中。for 循环是我的问题,我需要获取所有选定的值。谢谢

        protected void pg_upload_Click(object sender, EventArgs e)
        {
        using (SqlConnection mycon = new SqlConnection(connectionstring))
        {
            using (SqlCommand mycmd = mycon.CreateCommand())
            {
                if (textbox_make.Text == string.Empty || textbox_number.Text == string.Empty)
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('The Make/Model and Number must be Entered')", true);
                }
                else
                {

                    string str = "";

                    for (int i=0; i<= listbox_software.Items.Count; i++)
                    {
                        str = listbox_software.SelectedItem.ToString();
                    }

                    mycon.Open();
                    mycmd.CommandText = "INSERT INTO tbl_PG (Model, PGNumber, AssetNo, Area, Owner,IPAddress, SerialNo, OSVersion, Memory, Software) " +
                                        "Values ('" + textbox_make.Text + "' , '" + textbox_number.Text + "' , '" + textbox_asset.Text + "' , '" + drop_area.Text + "' , '" + drop_owner.Text + "' , '" + textbox_ip.Text + "' " +
                                                ", '" + textbox_serial.Text + "' , '" + textbox_os.Text + "' , '" + textbox_memory.Text + "' ,  '" + str + "')";

                    mycmd.ExecuteNonQuery();
                    PopulateGridView();

                    lblsuscessmessage.Text = "Selected Record Added";
                    lblerrormessage.Text = "";


                    textbox_make.Text = string.Empty;
                    textbox_number.Text = string.Empty;
                    textbox_asset.Text = string.Empty;
                    textbox_ip.Text = string.Empty;
                    textbox_serial.Text = string.Empty;
                    textbox_os.Text = string.Empty;
                    textbox_memory.Text = string.Empty;


                }
            }
        }
    }

标签: c#sql.netfor-looplistbox

解决方案


添加以下命名空间:

using System.Linq;

创建所选项目的字符串数组,然后使用 string.join:

    var selection = listbox_software.SelectedItems
        .Cast<string>()
        .ToArray();
    var str = string.Join(",", selection);

推荐阅读