AbhijitT.Net Ответов: 2

Как Заполнить Datagridview С Помощью Datatable (Dataset)?


Мой набор данных возвращает 5 строк с 5 столбцами данных. Но когда я пытаюсь заполнить datagridview в цикле DataTable, результирующий datagridview показывает все табличные данные в одной строке. Что-то вроде каскадного эффекта. Вот мой код:

foreach (DataTable table in (GetSeatLayout(1).Tables)
{
   foreach (DataRow row in table.Rows)
   {
      string[] arrRow = new string[] { row["Seat_Row_Name"].ToString() };
      gvSeatLayout.Rows.Add(arrRow);
      foreach (DataColumn column in table.Columns)
      {
          DataGridViewButtonColumn btn1 = new DataGridViewButtonColumn();
          // If Seat# from layout equals to booked seat#
          if (isThisSeatBookedAlready(Convert.ToInt32(row[column].ToString()), 1, Convert.ToDateTime(journeyDtPara)))
          {
              btn1.FlatStyle = FlatStyle.Popup;
              btn1.Width = 25;
              btn1.HeaderText = "Seat";
              btn1.Text = row[column].ToString();
              btn1.Name = "btn1_" + row[column].ToString();
              btn1.DefaultCellStyle.BackColor = Color.Gray;
              btn1.UseColumnTextForButtonValue = true;
              gvSeatLayout.Columns.Add(btn1);
          }
          else
          {
               btn1.FlatStyle = FlatStyle.Popup;
               btn1.Width = 25;
               btn1.HeaderText = "Seat";
               btn1.Text = row[column].ToString();
               btn1.Name = "btn1_" + row[column].ToString();
               btn1.UseColumnTextForButtonValue = true;
               gvSeatLayout.Columns.Add(btn1);
          }
       }
     }
   }
  }
}

2 Ответов

Рейтинг:
1

OriginalGriff

Почему вы добавляете столбцы каждый раз, когда идете по кругу?
Подумайте о том, что вы делаете:
Для каждой строки вы просматриваете каждый столбец в исходной таблице и добавляете еще один столбец в выходную таблицу.
Итак, если ваша исходная таблица имела 2 столбца и 3 строки:
Первая строка: добавьте одну строку и два столбца в gvSeatLayout
Вторая строка: добавьте вторую строку и добавьте еще два столбца в gvSeatLayout
Третья строка: добавьте третью строку и добавьте еще два столбца в gvSeatLayout

В конце концов, gvSeatLayout заканчивается 6 столбцами, и только первый когда-либо получает какие-либо данные.

Я понятия не имею, что вы пытаетесь здесь сделать, но я думаю, что вам нужно сесть и подумать о том, что именно вы пытаетесь отобразить, и какие данные вы хотите отобразить, потому что без этого вы просто догадываетесь, что делать, и никто не может вам действительно помочь!


Рейтинг:
0

Member 13109762

строка s = ConfigurationManager.ConnectionStrings ["constr"].Параметр connectionString;
строка sel = " select * from TableName";
MySqlConnection con = новый MySqlConnection(s);
MySqlCommand cmd = new MySqlCommand(sel, con);
MySqlDataAdapter sda = новый MySqlDataAdapter(cmd);
DataSet ds = новый набор данных();
ПДД.Заполнить(ДС);
gridview1. DataSource = ds;
управления gridview1.Привязку();
возвращение смотреть();