数组作为DataGrid的DataSource:如何自定义列?

时间:2010-06-12 12:13:48

标签: c# .net windows-mobile datagrid compact-framework

在我的Windows Mobile .NET应用程序中,我有一个简单的对象数组,其中包含我想要在DataGrid中显示的数据。为此,我只需致电:

myDataGrid.DataSource = myArray;

这有效,但我遇到了问题:它使用所有属性作为列,并使用属性的名称作为列标题。我无法弄清楚如何自定义两件事:

  • 选择应将哪个属性子集显示为列(例如,我有ID,名称和值属性,我只想显示名称和值);

  • 重命名列标题以使其更有意义(例如,如果属性名为ID,则显示列标题为“Number”)。

这有可能吗?

如上所述,这是在Windows Mobile .NET(版本2)应用程序中。

3 个答案:

答案 0 :(得分:1)

您需要设置Datagrid.TableStyles属性以自定义布局。

http://msdn.microsoft.com/en-us/library/system.windows.forms.datagrid.tablestyles.aspx

有关绑定到对象数组的更多详细信息: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridtablestyle.mappingname(VS.71).aspx

  

绑定   System.Windows.Forms.DataGrid到   强类型的对象数组,   对象必须包含公共属性。   创建一个DataGridTableStyle   显示这样的数组,设置   MappingName属性为classname []   其中classname被替换为   班级名称。还要注意   MappingName属性是   区分大小写的。

答案 1 :(得分:0)

我不知道您是否事先知道了列的名称?但如果是这种情况,您可以进入DataGridView的“编辑列”,然后在那里创建列。在“数据”类别中,将“DataPropertyName”从“(none)”更改为类属性的名称。从那里你可以自定义名称,如果它是可见的,大小等.DataGrid将它绑定到你的DataSource。

此外,还有一个属性“DataGridView.AutoGenerateColumns”可以设置为false,因此您不必绑定对象的所有属性。我也帮了那个帮忙。

答案 2 :(得分:0)

在这段代码中,_im是表的一个对象,我在绑定后用DataGridView dgvItem绑定了这个对象,我根据需要更改了dgvItem的头文本。

    dgvItem.Rows.Clear();
    dgvItem.DataSource = _im ;
    dgvItem.Columns[2].HeaderText = "Mobile Code";
    dgvItem.Columns[3].HeaderText = "Mobile Name";