Автоматически сгенерированные столбцы не заполняют список столбцов. Вам нужно будет перебрать элементы управления ячейки в первой строке и вручную изменить текст.
Используйте этот метод для события RowDataBound
вашей сетки. Он будет ловить строку заголовка и переназначать текстовые значения. Этот код предполагает, что вы знаете порядок, в котором будут получены ваши столбцы. Если нет, вы можете прочитать текст каждой строки и действовать соответственно ...
private void gvMyGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
// Apply to header only.
if (e.Row.RowType == DataControlRowType.Header)
{
e.Row.Cells[0].Text = "Column 1 Text";
e.Row.Cells[1].Text = "Column 2 Text";
e.Row.Cells[2].Text = "Column 3 Text";
}
}
Приведенный выше код предполагает, что вы знаете порядок, в котором будут получены ваши столбцы. Если нет, вы можете прочитать текст каждой строки и действовать соответственно:
private void gvMyGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
// Apply to header only.
if (e.Row.RowType == DataControlRowType.Header)
{
foreach (Cell cell in e.Row.Cells)
{
if (cell.Text == "FName")
{
cell.Text = "First Name";
}
else if (cell.Text == "LName")
{
cell.Text = "Last Name";
}
else if (cell.Text == "Etc")
{
cell.Text = "Et cetera";
}
}
}
}
В этом последнем случае вам нужно настроить словарь имен полей SQL и понятных английских имен для чтения, чтобы у вас не было пятидесяти if
операторов, но вы поняли идею.