为什么我的数据网格只填充一行

本文关键字:一行 填充 我的 数据 数据网 网格 为什么 | 更新日期: 2023-09-27 18:01:48

它使用多个值多次遍历foreach循环,但只使用一行填充网格。

        string textLines;
        string[] textLine;
        textLines = scannedGuid.Text;
        textLine = textLines.Split(Environment.NewLine.ToArray(), StringSplitOptions.RemoveEmptyEntries);
        DataSet ds2 = null; 
        Database db2 = DatabaseFactory.CreateDatabase("CouponConnectionString");
        Database db2 = DatabaseFactory.CreateDatabase("ConnectionString");
        foreach (string s in textLine)
        {
            try
            {
                DbCommand command2 = db.GetStoredProcCommand("sel_Guid_p");
                db2.AddInParameter(command2, "@pGuid", DbType.String, s);
                ds2 = db2.ExecuteDataSet(command2);

            }
            catch (Exception ex)
            {
            }

        }
        DataGrid1.DataSource = ds2;
        DataBind();

为什么我的数据网格只填充一行

我假设这段代码

            DbCommand command2 = db.GetStoredProcCommand("sel_Guid_p");
            db2.AddInParameter(command2, "@pGuid", DbType.String, s);
            ds2 = db2.ExecuteDataSet(command2);

返回一行。

仅仅因为你多次调用它,并不意味着有多个记录。在循环执行的所有内容中,您都将覆盖变量的值。

也许你可以把数据集的结果放到一个对象中(创建一个代表结果的类),然后在循环时,将每个结果对象添加到一个列表中,然后将该列表绑定到网格。

一个例子:

    List<MyCustomerClassForTheReturnedValues> values = new List<MyCustomClassForTheReturnedValues>();
    foreach (string s in textLine)
    {

            DbCommand command2 = db.GetStoredProcCommand("sel_Guid_p");
            db2.AddInParameter(command2, "@pGuid", DbType.String, s);
            MyCustomClassForTheReturnedValues x = new MyCustomClassForTheReturnedValues(db2.ExecuteDataSet(command2));
            values.Add(x);

    }

    DataGrid1.DataSource = values;
    DataGrid1.DataBind();

因为您每次都覆盖您的数据集,所以当您完成循环时,您只有最终的数据集,我假设它只包含一行。

你想干什么?

相反,您需要将所有参数放入一个SP中以获得所有参数,或者将多个数据集组合到一个数据结构中以填充数据网格。