Как выбрать отображаемые столбцы в сетке данных - PullRequest
0 голосов
/ 16 марта 2012

Я работаю над приложением .NET Compact Framework 3.5, которое включает в себя DataGrid. Я создал BindingSource, используя конструктор, и добавил bindingsource в качестве источника сетки данных. Он автоматически создал столбцы для каждого подходящего свойства моего исходного типа объекта, но я не хочу отображать все свойства.

Как мне указать, какие столбцы отображать, а какие скрывать? Я попытался поиграться со свойством TableStyles сетки данных (как в коде, так и в дизайнере), похоже, не дало никакого эффекта.

Ответы [ 2 ]

3 голосов
/ 21 сентября 2012

Это не сработало для меня, так как коллекция TableStyles элемента управления DataGrid была пустой в указанной вами точке и оставалась таковой до добавления коллекции DataGridTableStyle.

Используя ваше предложение для установки правильного значения для свойства MappingName, я достиг желаемого результата, создав и добавив новый объект DataGridTableStyle, содержащий только открытые поля, которые были обязательны в DataGrid.

// Create a DataGridTableStyle to hold all the columns to be displayed in the DataGrid
DataGridTableStyle myTableStyle = new DataGridTableStyle();
myTableStyle.MappingName = myBindingSource.GetListName(null);  // This is the magic line
myTableStyle.GridColumnStyles.Clear();

// Add some DataGridColumnStyles
DataGridTextBoxColumn columnRowId = new DataGridTextBoxColumn();
columnRowId.MappingName = "idx";  //This must match the name of the public property
ColumnRowId.HeaderText = "Record";
tableStyleReportsSummary.GridColumnStyles.Add(columnRowId);

// Add the table style to the DataGrid
myDataGrid.TableStyles.Clear();
myDataGrid.TableStyles.Add(myTableStyle);
1 голос
/ 17 марта 2012

Разобрался. Мне пришлось добавить следующую строку кода в конструктор формы, сразу после InitializeComponent():

myDataGrid.TableStyles[0].MappingName = myBindingSource.GetListName(null);

Затем я смог изменить свойство TableStyles сетки данных, чтобы изменить отображаемые столбцы, как мне будет угодно.

...