Порядок Столбцов C# DataGridView
в моем приложении у меня есть DataGridView, источник данных которого изменяется при нажатии кнопки. Например, нажав "всего загрузок" это будет:
dataGridView1.DataSource = totalDownloads();
или "загрузки" для каждого игрока
dataGridView1.DataSource = playerDownloads();
каждый метод получает данные через SQL-запрос и возвращает DataTable этой информации.
однако, с моим следующим кодом:
dataGridView1.DataSource=getStats();
public DataTable getStats()
{
DataTable table1 = new DataTable("Totals");
table1.Columns.Add("Park Name");
table1.Columns.Add("Author");
table1.Columns.Add("Total Downloads");
table1.Columns[2].DataType = typeof(int);
table1.Columns.Add("Rating (Max 5)");
table1.Columns[3].DataType = typeof(float);
table1.Rows.Add(name,author,download, rating);
}
return table1;
}
Я ожидал увидеть colums в порядке: "имя парка ""автор "" всего загрузок" "Рейтинг" Однако они входят в "загрузки", "название парка", "автор", "рейтинг"
Я прочитал это добавление: dataGridView1.AutoGenerateColumns = false; исправим это...однако для ордена это не имеет никакого значения...
спасибо за помощь!
6 ответов
это проект WinForms или Asp.net один?
Если это winforms, вы должны иметь возможность изменить порядок отображения столбцов, обратившись к столбцам GridViews DisplayIndex
dataGridView1.Columns["Park Name"].DisplayIndex = 0; // or 1, 2, 3 etc
мое простое решение для столбцов не в порядке, чтобы добавить этот цикл, который устанавливает DisplayIndex
до Index
.
foreach (DataGridViewColumn col in grid.Columns) {
col.DisplayIndex = col.Index;
}
на Index
присваивается каждому столбцу по мере их добавления. Я не уверен, почему DisplayIndex
выходит из строя, но приведенный выше скрипт исправит это.
попробуйте сыграть с индексом дисплея, как это
private void AdjustColumnOrder()
{
customersDataGridView.Columns["Park Name"].DisplayIndex = 0;
customersDataGridView.Columns["Author"].DisplayIndex = 1;
customersDataGridView.Columns["Total Downloads"].DisplayIndex = 2;
}
для меня это не трюк. Нужна еще одна строка:
entityDataGridView.AutoGenerateColumns = false;
С уважением!
Я нашел это очень полезным.
использование: ColumnDisplayOrder ("имя парка, автор, общее количество загрузок", myDataGridView);
private void ColumnDisplayOrder(string columnList, DataGridView gridView)
{
var columnListArray = columnList.Split(',');
for (var i = 0; i < columnListArray.Length; i++)
{
var gridViewColumn = gridView.Columns[columnListArray[i].Trim()];
if (gridViewColumn != null)
gridViewColumn.DisplayIndex = i;
}
}
У меня была та же проблема. Я решил с помощью:
dataGridView.DataSource = null;
dataGridView.DataSource = MyDataTable;