c#DataColumn:生成一个新的GUID作为默认值?

cim*_*ine 3 c# guid datagridview dataset

我的问题:
我有一个DataSet多个DataTables.所有这些DataTables都有一个DataColumn名为"ID"用DataTypeSystem.Guid.

这样一个表的一个简短例子:

+--------------------+
| User               |
+--------------------+
| *Id as System.Guid |
| Username as String |
| /* more columns */ |
+--------------------+
Run Code Online (Sandbox Code Playgroud)

我把它分配DataTable给了DataGridView.在DataGridView被配置为允许条目的创建,编辑和删除.

当用户现在创建新条目并保存它时,会出现"Id"未设置的异常.

我的问题:
如何自动生成System.Guid新条目的新内容?

我目前的想法:

  • 在中指定一些魔法值dataSet.dataTable.Columns['Id'].DefaulValue.(像这样的东西<DBNull>)
  • dataSet.dataTable侦听新行时使用类似触发器的东西.它必须在行验证之前执行
  • 像触发器一样,但在dataGridView.

我尝试过的:

  • 的这些事件DataGridView:RowsAdded,UserAddedRow,RowValidating,DefaultValuesNeeded

如果有人能为我提供工作解决方案或提示,那将是非常棒的!

〜克里斯

Dav*_*all 6

我不确定你为什么说你不能使用DefaultValuesNeeded- 我刚试过这个并且它完美地工作:

void dataGridView1_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
{
    e.Row.Cells["Guid"].Value = Guid.NewGuid();
}
Run Code Online (Sandbox Code Playgroud)

我将Guid列的visibility属性设置为false,以便它不显示.创建新行时,该行已填充guid.