Работая через 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...
}
}