我有一个由几个用户ID组成的dropdowncheckbox。现在,在选择一个用户时,它将显示2个列表框,Listbox1具有一个条形码列表,而Listbox2包含已分配给该用户的条形码。从listbox1需要选择多个项目并将其分配给用户。现在,我想针对所选条形码更新所选的userid列。每个条形码在数据库中的不同行中。我试过了:
protected void assign_Click(object sender, EventArgs e)
{
try
{
if (ListBox1.SelectedIndex == -1)
{
Label9.Text = "Please Select Barcodes";
}
else
{
foreach (ListItem item in ListBox1.Items)
{
if (item.Selected == true)
{
ListBox2.Items.Add(item);
ListBox1.Items.Remove(ListBox1.SelectedItem);
}
}
}
}
catch { //Some code }
finally
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Con"].ConnectionString);
string cmdtxt= "Update " + con.Database + " set AssgnId= @userid where barcode= @barcode ";
SqlCommand cmd = new SqlCommand(cmdtxt,con);
cmd.Parameters.AddWithValue("@userid", ddchkteachers2.SelectedItem.Value);
cmd.Parameters.AddWithValue("@barcode", ListBox1.SelectedItem);
con.Open();
foreach (ListItem item in ListBox1.Items)
{
if (item.Selected == true)
{
cmd.Parameters["@barcode"].Value = Convert.ToString(ListBox1.SelectedItem);
cmd.ExecuteNonQuery();
}
}
con.Close();
}
}
选定的条形码位于数据库的nvarchar()列中。如何转换? userid列中与条形码相对应的当前值为Null。代码不会更新。
最佳答案
您正在通过检查是否已从第一个ListBox1
中的loop
中删除项目,而在第二个loop
中,您正在执行相同的操作。这意味着在第二个循环中的ListBox1
中将没有任何值。您可以在循环中放入breakpoint
并验证其值。
语句执行后,
cmd.Parameters.AddWithValue("@barcode", ListBox1.SelectedItem);
ListBox1.SelectedItem
中什么都没有,foreach循环中也是如此。希望能帮助到你。
关于c# - 如何在数据库的nvarchar()列的不同行中更新列表框的多个选择?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42105929/