复选框列表多个值选择和显示在gridview中的asp.net



我使用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 ;
...
}

最新更新