DataTable事件和行状态

时间:2012-09-28 17:38:18

标签: c# ado.net

我允许我的用户在绑定到DataTable的DataGridView中添加/编辑/删除数据。一切正常。数据很好地更新回数据库。但是,我在DataTable中有一些字段,我不想在DataGridView中看到它们,例如CreatedOn和CreatedBy。我需要在更新到数据适配器之前根据行的状态将值写入这些列。 在这种情况下,我应该在数据表中为TableNewRow和RowChanged连接一些事件处理程序,并在数据适配器更新和AcceptChanges发生之前操作行列吗?

感谢您的任何想法。

赖安

1 个答案:

答案 0 :(得分:2)

这是我想出来的,效果很好。在将数据表传递回我的数据访问类之后,我循环表中的行并检查DataRowState。我根据DataRowState设置列值。

foreach (DataRow row in dt.Rows)
            {
            if (row.RowState == DataRowState.Added)
                {
                row["CreatedOn"] = DateTime.Now;
                row["CreatedBy"] = GlobalProp.UserName;
                row["ModifiedOn"] = DateTime.Now;
                row["ModifiedBy"] = GlobalProp.UserName;
                }
            else if (row.RowState == DataRowState.Modified)
                {
                row["ModifiedOn"] = DateTime.Now;
                row["ModifiedBy"] = GlobalProp.UserName;
                }
            }

希望能帮到别人!

[R