Почему моя сетка данных заполняет только один ряд? - PullRequest
0 голосов
/ 12 июля 2011

Он проходит цикл 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();

Ответы [ 2 ]

2 голосов
/ 12 июля 2011

Я предполагаю, что этот код

            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();
1 голос
/ 12 июля 2011

Поскольку вы каждый раз перезаписываете свой набор данных, поэтому, когда вы завершаете цикл, у вас есть только последний набор данных, который, как я предполагаю, содержит только одну строку.

Что вы пытаетесь сделать?

Скорее - вам нужно поместить все параметры в один SP, чтобы получить их все, ИЛИ объединить несколько наборов данных в одну структуру данных, чтобы заполнить сетку данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...