Как установить подпись для DataGridView - PullRequest
1 голос
/ 22 мая 2009

Я использую DataGridView в приложении WinForm, чтобы показать таблицу данных. Все работает отлично, за исключением свойства Caption DataColumn. Я пытался установить свойство Caption, но кажется, что DataGridView использует имя DataColumn в качестве заголовка вместо значения свойства Caption?

Пользуйтесь Google для этого, и кажется, что это свойство заголовка намеренно отключено.

Мое приложение WinForm локализовано, и мне нужно показать заголовок на китайском языке. Кто-нибудь знает, как я могу это сделать?

Вот мой код для настройки таблицы данных

// Create a new DataTable.
DataTable table = new DataTable("Payments");

// Declare variables for DataColumn and DataRow objects.
DataColumn column;
DataRow row;

// Create new DataColumn, set DataType, 
// ColumnName and add to DataTable.    
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "id";
column.ReadOnly = true;
column.Unique = true;
column.Caption = LocalizedCaption.get("id") //LocalizedCaption is my library to retrieve the chinese caption

// Add the Column to the DataColumnCollection.
table.Columns.Add(column);


// Create three new DataRow objects and add them to the DataTable
for (int i = 0; i <= 2; i++)
{
    row = table.NewRow();
    row["id"] = i;
    table.Rows.Add(row);
}

//assign the DataTable as the datasource for a DataGridView
dataGridView1.DataSource = table;

Ответы [ 2 ]

3 голосов
/ 22 мая 2009

У вас есть несколько вариантов. Вот быстрое исправление, которое должно сработать, просто добавьте это в конце своего блока кода:

        //Copy column captions into DataGridView
        for (int i = 0; i < table.Columns.Count; i++) {
            if (dataGridView1.Columns.Count >= i) {
                dataGridView1.Columns[i].HeaderText = table.Columns[i].Caption;
            }
        }

Как видите, это просто копирует существующие заголовки столбцов в правильное свойство HeaderText каждого столбца DataGridView. Предполагается, что в DataGridView не существует предыдущих столбцов до того, как вы привяжете DataTable.

1 голос
/ 20 сентября 2011

Это сработало для меня:

private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    var dGrid = (sender as DataGrid);
    if (dGrid == null) return ;
    var view = dGrid.ItemsSource as DataView;
    if (view == null) return;
    var table = view.Table;
    e.Column.Header = table.Columns[e.Column.Header as String].Caption;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...