将DataGridView绑定到List<>,某些属性不应显示

时间:2009-05-22 21:46:05

标签: c# data-binding datagridview

我正在尝试将DataGridView绑定到List,其中MyObject看起来像

class MyObject
{
    public string Property1 { get; set; }
    public string Property2 { get; set; }
}

//List<MyObject> objects;
grid.Columns[0].DataPropertyName = "Property1";
grid.DataSource = objects;

我只想显示一个属性,但是我将另一个列添加到我的DataGridView,其中还显示了Property2。如何防止它被添加?

3 个答案:

答案 0 :(得分:9)

如果从不希望显示该属性:

class MyObject
{
    public string Property1 { get; set; }
    [Browsable(false)]
    public string Property2 { get; set; }
}

否则,如前所述 - 将AutoGenerateColumns设置为false并手动添加。

答案 1 :(得分:2)

听起来您将DataGridView控件的AutoGenerateColumns属性设置为True。您可以将其设置为False,也可以使用.Columns.Remove方法删除您不想看到的列。

答案 2 :(得分:0)

我相信你需要手动设置列,正如Henk所说。但是,您可能希望设置比其示例中更多的属性。这就是我在一个项目中所做的:

DataGridView dataGridView = new DataGridView();
dataGridView.AutoGenerateColumns = false;

DataGridViewColumn columnA = new DataGridViewTextBoxColumn();
columnA.DataPropertyName = "propertyA";
columnA.HeaderText = "Column A";
columnA.Name = "columnA";

DataGridViewColumn columnB = new DataGridViewTextBoxColumn();
columnB.DataPropertyName = "propertyB";
columnB.HeaderText = "Column B";
columnB.Name = "columnB";

dataGridView.Columns.Clear();
dataGridView.Columns.Add(columnA);
dataGridView.Columns.Add(columnB);
dataGridView.AutoResizeColumns();

我相信以上的作品。如果你得到一个奇怪的异常检查,以确保列/单元格定义了默认的单元格样式。