невозможно изменить имена столбцов при заполнении списком и использовании полей автоматической генерации - PullRequest
1 голос
/ 18 января 2012

Имена столбцов по умолчанию: item1, item2 и item3, и я не могу их изменить. Я видел подобный вопрос здесь, но ни одно из решений не сработало.

  if (depositTotal != cartTotal & depositTotal != 0.0)
  {
      list.Add(Tuple.Create(amazonOrderID, depositTotal, cartTotal));

  }
  dataGridTotals.DataSource = list;

  dataGridTotals.DataBind();

Iя пытался использовать это после и до того, как данные сетки просмотра будут связаны, но это не работает:

dataGridTotals.Columns[0].HeaderText = "New Header for Column";

У кого-нибудь есть другие идеи?

1 Ответ

2 голосов
/ 18 января 2012

Автоматически сгенерированные столбцы не заполняют список столбцов. Вам нужно будет перебрать элементы управления ячейки в первой строке и вручную изменить текст.

Используйте этот метод для события 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 операторов, но вы поняли идею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...