2016-08-24 4 views
2

Я использую Datatable для получения значений из таблицы базы данных.Удалить первый столбец из datatable

DataTable dt = this.GetData(); 
StringBuilder html = new StringBuilder(); 
html.Append("<table border = '1'>"); 
foreach (DataRow row in dt.Rows) 
    { 
     html.Append("<tr>"); 
     foreach (DataColumn column in dt.Columns) 
      { 
       html.Append("<td>"); 
       html.Append(row[column.ColumnName]); 
       html.Append("</td>"); 
      } 
      html.Append("</tr>"); 
     } 
     html.Append("</table>"); 

Приведенный выше код дает мне этот выход: enter image description here Столбец 0 0 генерируется из ИД столбца моей таблицы. Я не передал идентификатор через мою сохраненную процедуру, потому что мне не нужно отображать их. Есть ли способ удалить первый столбец и предотвратить его отображение?

ответ

2

вы можете также использовать для вместо FOREACH и начать с 1 вместо 0

for(int i=1;i<dt.Columns.Count;i++){//do whatever} 
+0

Я использовал это и теперь im получаю ошибку в строке html.Append (строка [column.ColumnName]) ;. как я могу это решить? @Shannon –

+1

ОК получил. сделал это маленькое крошечное изменение далее «html.Append (строка [i]);« –

+0

Да - при переключении с перечисления на индекс вам всегда нужно указывать значение индекса. Это ВСЕГДА строка [I]. Извините, я не видел этого раньше и рад, что вы его исправили! –

3

Просто используйте Linq Skip:

foreach (DataColumn column in dt.Columns.AsEnumerable().Skip(1)) 

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

if (dt.Columns.Length > 1) 
{ 
    foreach (DataColumn column in dt.Columns.AsEnumerable().Skip(1)) 
    ...etc 
+0

попробовал это и добавил пространство имен System.Linq, но он говорит, что «DataColumnCollection» не содержит определения для Skip. Как я могу решить это, пожалуйста, –

+1

use .asenumerable – Neil

+0

Да, вам нужно сделать это как IEnumerable. Обновлено – Liam

0
dt.Columns.RemoveAt(0); 

Просто удалите столбец в указанной позиции.

0

Я искал то же самое, и я нашел this answer.

Кредит для: Zortkun.

foreach (DataColumn column in dt.Columns) 
{ 
    if (dt.Columns.IndexOf(column) != 0) 
    { 
     html.Append("<td>"); 
     html.Append(row[column.ColumnName]); 
     html.Append("</td>"); 
    } 
    } 

Это сработало для меня.

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