【发布时间】:2009-09-11 16:11:00
【问题描述】:
是否可以从具有 DataRowState.Deleted 的 DataTable 中显示 DataRow?
场景: 用户可以编辑在网格中呈现的某种查找信息。 现在他/她可以删除、修改或插入多个条目,最后存储他/她的所有 一键更改数据库(假设没有违反主键 或其他问题)。
现在我想根据它们的编辑状态为不同的行着色,但是 删除的行立即消失。
你有什么想法或其他方法来解决这个问题吗?
【问题讨论】:
是否可以从具有 DataRowState.Deleted 的 DataTable 中显示 DataRow?
场景: 用户可以编辑在网格中呈现的某种查找信息。 现在他/她可以删除、修改或插入多个条目,最后存储他/她的所有 一键更改数据库(假设没有违反主键 或其他问题)。
现在我想根据它们的编辑状态为不同的行着色,但是 删除的行立即消失。
你有什么想法或其他方法来解决这个问题吗?
【问题讨论】:
编辑:我意识到您使用的Grid 不是DataGridView。对于任何想要对DataGridView 执行相同操作的人,他们可以执行以下操作:
创建一个DataView:
DataView myDataView =
new DataView(myDataTable,
String.Empty, // add a filter if you need one
"SortByColumn",
DataViewRowState.OriginalRows | DataViewRowState.Deleted);
myDataGridView.DataSource = myDataView;
处理UserAddedRow、UserDeletedRow 和CellValueChanged 事件:
private void myDataGridView_UserAddedRow
(object sender, DataGridViewRowEventArgs e)
{
e.Row.DefaultCellStyle.BackColor = ColorTranslator.FromHtml("#CCFF99");
}
private void myDataGridView_UserDeletedRow
(object sender, DataGridViewRowEventArgs e)
{
e.Row.DefaultCellStyle.BackColor = ColorTranslator.FromHtml("#FFCC99");
}
private void myDataGridView_CellValueChanged
(object sender, DataGridViewCellEventArgs e)
{
myDataGridView[e.ColumnIndex, e.RowIndex].DefaultCellStyle.BackColor
= ColorTranslator.FromHtml("#FFFF99");
}
【讨论】: