2013-03-28 4 views
1

Я установил VS 2012 после многих лет, используя VS 2010, и я даже не успеваю перебирать строки таблицы (что раньше было довольным), и это абсолютно важно для моего проекта.Looping через таблицу DataSet

Я пробовал много способов позвонить DataGrid.Rows, но это уже не доступно для пользователей, поэтому я пытаюсь найти работу.

Вот и вот что я придумал, но вторая часть просто не работает для меня.

foreach (TableRow row in MyDatabaseDataSet.Tables["Table1"].Rows) 
{ 
//Pesky lengthy non-working code supposed to generate 
//controls dependent on row cell value 
} 

Просто, чтобы сделать вещи проще (код не работает просто так длительным было бы встречное конструктивно разместить его здесь. Вместо этого давайте попробуем получить MessageBox, чтобы показать значение ячейки во 2-м столбце из строки посмотрел на

Но ничего не делает

я пытался много много способов, которыми я мог думать о том числе:..

MessageBox.Show(row.Cells[2].Value); 
MessageBox.Show(row.Cells[2].Text); 

Но это просто будет не я работаю для меня вообще!

Даже не хочет запускать проект вообще.

Как я могу пройти через все строки в DataTable или даже Datagrid?

PS: Я забыл упомянуть, но также добавил сегмент Load Data в коде перед оператором foreach, написанным выше.

+2

'DataTable.Rows' возвращает 'DataRowCollection', который содержит' DataRows' а не 'TableRows'. –

+1

Когда вы говорите: «Это не работает», и вы не говорите нам, что это значит (как вы делали дважды), это почти бессмысленно. Если «это не работает», сообщите нам, каким образом он не работает. Разве это не компилируется? Вызывает ли это исключение во время выполнения? Есть ли сообщение об ошибке? Если да, то что именно ** это говорит? Это намного проще, если вы предоставите нам информацию, так как вы уже имеете ее прямо перед собой, вместо того, чтобы нас угадывать. –

ответ

5

Возможно, я пропустил что-то простое, но DataTable.Rows возвращает DataRowCollection который содержит DataRows не TableRows.

Таким образом, вместо

foreach (TableRow row in MyDatabaseDataSet.Tables["Table1"].Rows) 
{ 
    // ... 
} 

это:

foreach (DataRow row in MyDatabaseDataSet.Tables["Table1"].Rows) 
{ 
    // ... 
} 
0

DataTable.Rows возвращает экземпляр DataRowCollection, который содержит DataRow объекты, не TableRow

foreach(DataRow row in MyDatabaseDataSet.Tables["Table1"].Rows) 
{ 
    // code here 
} 
+0

Спасибо вам обоим. ответ действительно DataRow вместо строки tabel и для получения значения ячейки просто: messagebox.show (row.Field ("Columnname")) –

Смежные вопросы