2012-01-12 2 views
2

Я использую StringBuilder для динамического конструирования таблицы из DataSet. Он состоит из двух частей: один для создания меток и их размеров и порядка столбцов. В этой части я уже работаю. Я застрял в том, как получить столбцы с «значениями», а затем добавить строку для завершения построения таблицы.Использование StringBuilder с DataSet для построения динамической таблицы

Есть 25 столбцов, но обычно таблица имеет только 17 или около того. Мне также нужно отфильтровать первый столбец. Мне трудно понять, как это сделать. Это то, что у меня есть до сих пор. Все, что он делает, это вытащить первое значение в DS. Я также могу изменить номер индекса, но в этом случае я не могу этого сделать, поскольку число и индекс каждого столбца неизвестны.

  DataSet valuesSet = getBlendInfo.GetProcessValues(reqID); 

      foreach (DataRow dRow in valuesSet.Tables[0].Rows) 
      { 
       tblString.Append("<td>"); 
       tblString.Append(dRow[0].ToString()); 
       tblString.Append("</td>"); 
      } 
+0

Maybe давайте немного подробнее, ot По этой причине для этого может быть рекомендовано использовать один из элементов управления ASP.NET UI. –

+0

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

ответ

2

Try:

DataSet valuesSet = getBlendInfo.GetProcessValues(reqID); 
foreach (DataRow dRow in valuesSet.Tables[0].Rows) 
{ 
    bool firstColumn = true; 
    foreach (DataColumn dbColumn in valuesSet.Tables[0].Columns) 
    { 
     if (firstColumn) 
      firstColumn = false; 
     else 
     { 
      tblString.Append("<td>"); 
      tblString.Append(dRow[dbColumn].ToString()); 
      tblString.Append("</td>"); 
     } 
    } 
} 
+0

Sweet! Это работает. Качайте себя за то, что не в состоянии зачать это. Все, что мне нужно сделать сейчас, это то, как заставить его пропустить первый столбец, который является полем ID, и это золотой. –

+0

Возможно ли с помощью DataColumn.Expression? –

+0

@JohnKinane Я изменил код, чтобы пропустить первый столбец. Я не понимаю вашу мысль о DataColumn.Expression. Что вы пытаетесь с этим сделать? –

2

вам просто нужно использовать вложенный цикл, что-то вроде этого:

foreach (DataRow row in table.Rows) 
{ 
    tblString.Append("<tr>"); 

    for (int i = 0; i < table.Columns.Count; i++) 
    { 
     tblString.Append("<td>"); 
     tblString.Append(row[i].ToString()); 
     tblString.Append("</td>"); 
    } 

    tblString.Append("</tr>"); 
} 

проверки для null перед чтением из row[i]

0
//This way you can create a row with the column names 
blString.Append("<tr>"); 

foreach(var col in valuesSet.Tables[0].Columns) 
{ 
    tblString.Append("<td>"); 
    tblString.Append(col.ToString()); 
    tblString.Append("</td>"); 
} 

blString.Append("</tr>"); 
Смежные вопросы