条件DataGridView格式

时间:2010-11-01 06:41:16

标签: c# winforms datagridview

我有一个DataGridView。我将其.DataSource prop设置为我自己的对象的BindingList:BindingList<IChessItem>

然后我为它创建了一些列..

    DataGridViewTextBoxColumn descColumn = new DataGridViewTextBoxColumn();
    descColumn.DataPropertyName = "Description";
    descColumn.HeaderText = "Description";
    descColumn.Width = 300;

    DataGridViewTextBoxColumn gameIDColumn = new DataGridViewTextBoxColumn();
    gameIDColumn.DataPropertyName = "GameID";
    gameIDColumn.HeaderText = "Game ID";
    gameIDColumn.Width = 60;

    dataGrid.Columns.Add(descColumn);
    dataGrid.Columns.Add(gameIDColumn);

我的问题是..我想根据BindingList的另一个字段中的数据为其中一列GREEN着色。我怎么能这样做?

我真的不必显示这个字段,我只是想对其中的数据采取行动..

在我的例子中,IChessItem的一个字段显示记录是否是新记录,并且我想为datagridview中的其他字段着色以反映该记录。

2 个答案:

答案 0 :(得分:24)

您可以使用DataGridView的'CellFormatting'事件。 DataGridViewCellFormattingEventArgs包含当前单元格绑定时的行和列的索引。我希望我的代码示例对你有意义:

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    // Compare the column to the column you want to format
    if (this.dataGridView1.Columns[e.ColumnIndex].Name == "ColumnName")
    {
        //get the IChessitem you are currently binding, using the index of the current row to access the datasource
        IChessItem item = sourceList[e.RowIndex];
        //check the condition
        if (item == condition)
        {
             e.CellStyle.BackColor = Color.Green;
        }
    }
}

答案 1 :(得分:0)

您可以使用任何循环或数据源填充DataGridView中的数据。然后为DataGridView1.Rows中的每个DataGridViewRow ----

chk ref值ypu想要chk然后设置DataGridviewCell [index] .style.backColor属性。