table.TableNewRow += new DataTableNewRowEventHandler(table_TableNewRow);
void table_TableNewRow(object sender, DataTableNewRowEventArgs e) { string pk = e.Row.Table.PrimaryKey[0].ColumnName; if (e.Row[pk] == DBNull.Value) e.Row[pk] = new System.Guid(); }See if that will work for you.
using System.Windows.Forms; >using System.Data; >static class Program { > static void Main() { > Application.Run(new Frm()); > } > } > >class Frm: Form { > public Frm() { > DataTable table = new DataTable(); > DataColumn[] keys = new DataColumn[1]; > DataColumn column1 = new DataColumn(); > DataColumn column2 = new DataColumn(); > DataGrid grid = new DataGrid(); > > grid.Dock = DockStyle.Fill; > table.Columns.Add(column1); > table.Columns.Add(column2); > keys[0] = column2; > table.PrimaryKey = keys; > Controls.Add(grid); > table.RowChanging += new DataRowChangeEventHandler(OnRowChanging); > grid.SetDataBinding(table, ""); > } > > private void OnRowChanging(object sender, DataRowChangeEventArgs e) { > if (e.Action == DataRowAction.Add) { > string pk = e.Row.Table.PrimaryKey[0].ColumnName; > if (e.Row[pk] == null) > e.Row[pk] = new System.Guid(); > } > } > } >