将DataGridViewRow转换为CustomDataGridViewRow

时间:2016-02-10 08:12:06

标签: c# linq datagridview datatable

目前,我有一个绑定到DataTable的DataGridView。

dataGridView.SetDataSource(datatable);

数据表是从适配器填充的。

adapter.Fill(datatable);

我需要向来自另一个Query的DataGridView添加其他行。列是相同的。 我需要区分来自当前数据表和第二个数据表的行。为此,我将为2个查询中的每一个添加一个新字段以进行身份​​验证。 我创建了一个新类CustomDataGridViewRow,它派生自DataGridViewRow并更改其外观属性(颜色,字体,样式等)之一,以便用户区分它们。

public class CustomDataGridViewRow : DataGridViewRow
{
      // set some appearance properties in order to the user to differ between the 2 type of rows
}

从目前开始,DataGridView绑定到DataTable,我不想改变这种行为。我虽然订阅RowAdded事件并根据标识列信息,将DataGridViewRow转换为CustomDataGridViewRow。 我尝试了以下但我不确定如何使它工作。

private void dataGridView_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
    {
        var row = (sender as DataGridView).Rows[e.RowIndex] as CustomDataGridViewRow;            
    }

有没有办法将DataGridViewRow转换为CustomDataGridViewRow?

更新: 我发现RowsAdded事件没有触发,因为我没有使用Rows.Add方法添加行。所以这是另一个问题。在找到将DataGridViewRow转换为CustomDataGridViewRow的方法之后,我需要找到一个可以执行此操作的地方。

1 个答案:

答案 0 :(得分:0)

初始化RowTemplate时,您必须指定dataGridView1.RowTemplate = new CustomDataGridViewRow();

CustomDataGridViewRow

然后,添加行时,会自动创建RowsAdded,您无需处理StudentId事件。