复选框列表多个值选择和显示在gridview中的asp.net
本文关键字:gridview 中的 asp net 显示 列表 选择 复选框 | 更新日期: 2023-09-27 18:05:29
我使用c#的web应用程序将复选框列表。我把代码写在下面。当我从复选框列表中选择多个值时,它报告错误。但是对于只有一个值select,它工作得很好。
代码有两部分:
1. 从复选框中选择(多选):该值与数据库中相同,数据库中存储相关数据。
2. 向gridview显示值:选择后,将整个表显示给gridview显示。
我的错误是当选择2和更多的值从复选框,然后错误说"变量名@textInput
已经被声明。变量名在查询批处理或存储过程中必须是唯一的。"
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class TestGridview : System.Web.UI.Page
{
private int count = 0;
private DataSet dc = new DataSet();
protected void Page_Load(object sender, EventArgs e)
{
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
// Create the list to store.
List<String> YrStrList = new List<string>();
foreach (ListItem item in CheckBoxList1.Items)
{
if (item.Selected)
{
YrStrList.Add(item.Value);
}
}
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["XMLConnectionString"].ConnectionString);
// Create the command object
string str = "SELECT * FROM XML WHERE [Part_Numbber] = @textInput";
SqlCommand cmd = new SqlCommand(str, con);
for (int d = 0; d < YrStrList.Count; d++)
{
DataSet ds = new DataSet();
string text;
text = YrStrList[d];
cmd.Parameters.AddWithValue("textInput", text);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds, "XML");
if (count == 0) {
dc = ds.Clone();
count++;
}
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i].ItemArray[0].ToString() != "NULL")
dc.Tables[0].ImportRow(ds.Tables[0].Rows[i]);
}
}
GridView1.DataSource = dc;
GridView1.DataBind();
}
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
由于要重复执行相同的查询,因此可以在循环外添加参数,并在循环内填充参数。
SqlCommand cmd = new SqlCommand(str, con);
command.Parameters.Add(new SqlParameter("@textInput", 0));
for (int d = 0; d < YrStrList.Count; d++)
{
string text;
text = YrStrList[d];
command.Parameters["@textInput"].Value = text ;
...
}