Работая через DataRow, может получить значения столбца, но не заголовок?

DataTable currentAttribs = //return dataTable of results;

foreach (DataRow r in currentAttribs.Rows)
 {
    foreach (DataColumn column in r.ItemArray)
       {
         //run through dataRow and access header?????
         {
              tableRow = "<TR><TD>" + column[0].ToString() + "</TD></TR>";
              Literal lc = new Literal();
              lc.Text = tableRow;
              divFeatureInfo.Controls.Add(lc);
          }
       }
  }

Возвращает все значения в столбце, но я не могу получить доступ к значению заголовка столбца

Я вижу, как проходит заголовок, но мне нужно получить к нему доступ с внешней петли?

ОБНОВИТЬ

Я могу просмотреть заголовок отсюда - r.Table.Columns.NonPublicMembers.List();.. но как мне получить доступ к каждому? Разве это не должно быть сделано внутри r.itemArray, а не currentAttribs.rows

4 ответа

Перебрать столбцы

r.Table.Columns.Item(i)
r.Table.Columns.Item(i).Caption

Это может быть достигнуто с помощью свойства Table вашего экземпляра DataRow.

foreach (DataColumn c in r.Table.Columns)  //loop through the columns. 
{
    MessageBox.Show(c.ColumnName);
}

Может использоваться как

DataTable currentAttribs = //return dataTable of results;    
foreach (DataRow r in currentAttribs.Rows)
 {
    foreach (DataColumn column in currentAttribs.Columns)
       {
         //run through dataRow and access header?????
         {
              tableRow = "<TR><TD>" + column.ColumnName + "</TD></TR>";
              Literal lc = new Literal();
              lc.Text = tableRow;
              divFeatureInfo.Controls.Add(lc);
          }
       }
  }

Это не идеальный ответ на ваш конкретный вопрос, но это ответ на сам вопрос: «Как я могу сопоставить заголовки столбцов со значениями ItemArray DataRow.

Для меня это основное решение.

              private void UpdateButton_Click(object sender, EventArgs e)
        {
            DataRow[] modifiedRows = _dataTable.Select("", "", DataViewRowState.ModifiedCurrent);

            foreach (var row in modifiedRows)
            {
                for (var i = 0; i < row.Table.Columns.Count; i++)
                {
                    var ColumnName = row.Table.Columns[i].ColumnName;
                    var ColumnValue = row.ItemArray[i];
                }

                //... build objects now that we can map the property names and new values...

            }
        }

Другие вопросы по тегам