Относительно привязки массива к gridview

#asp.net

#asp.net

Вопрос:

Привет, я создал сессионный массив :

  int[] a = (int[])Session["values"];
  

Теперь я должен привязать это значение к моему gridview. У меня есть один столбец (boundfield в моем gridview) в gridview.
Я использовал код для привязки массива к gridview следующим образом, но он дает последнее значение только потому, что я хочу, чтобы все значения были привязаны :

      for (int i = 0; i < a.Length; i  )
            {
                str = "select * from Quest_Info where Quest_id='"   a[i]   "' order by Quest_id";
                SqlDataAdapter da2 = new SqlDataAdapter(str, sqlconn);
                ds2 = new DataSet();
                da2.Fill(ds2, "Result");
            reviewgrid.DataSource = ds2;
            reviewgrid.DataBind();
}
  

Какой код будет работать для этого?
Asp.net, c#
Спасибо.

Ответ №1:

Ваш код может не работать, потому что вы пытаетесь привязать gridview в цикле for, который продолжает повторяться, и в результате в конце будет привязан только один последний идентификатор массива.

Вы можете попробовать подготовить запрос заранее, прежде чем привязывать gridview, как показано в примере ниже.

 string questIds = string.Empty;

for (int i = 0; i < a.Length; i  )
{
    if (questIds.Length > 0)
        questIds  = ", ";

    questIds  = a[i];  
}

 string strSQL = "select * from Quest_Info where Quest_id IN ("  questIds   ") order by Quest_id";
 SqlDataAdapter da2 = new SqlDataAdapter(str, sqlconn);
 ds2 = new DataSet();
 da2.Fill(ds2, "Result");
 reviewgrid.DataSource = ds2;
 reviewgrid.DataBind();
  

Комментарии:

1. В этом коде, когда я использую response.write, тогда он выдает правильные значения questIds, но неправильные значения в gridview, в response.write это дает 5, 1, 6, 2, 3, 4 но фактически в gridview это дает 1 2 1 3 4 6 5

2. Я видел предложение ‘order by’ в вашем запросе. таким образом, результат будет отсортирован в порядке возрастания в вашем gridview.

3. нет, я удалил это предложение и также проверил. 1 также повторяется. но в response.write принимает правильные значения, т.е. задает вопросы, почему не в gridview

4. Я не могу придумать никаких других причин. вы можете проверить содержимое таблицы, Quest_Info. есть ли дубликат quest_id или нет.