关于C#中DataGrid和有关数据修改(WinForm)
有一个数据显示窗体是利用DataGrid显示的,我想达到一个目的,当我双击DataGrid中的某一行时,将弹出一个新窗口,新窗口中显示该条记录的详细信息以便修改(通过该条记录在数据库中的id值),,WebForm中的DataGrid有该属性:DataGrid1.DataKeyField来指定一个字段为主键WinForm中存不存在类似的功能。另外WinForm中DataGrid有没有想Webform中DataGrid定制功能(属性生成器),因为DataGrid默认是取出所有的字段而有些字段是不想显示的例如:id,请问各位高手以上问题该如何实现。
注:数据绑定是在程序运行时实现的
问题点数:100、回复次数:2Top
1 楼wljcan(wlj)回复于 2002-12-15 17:41:15 得分 0
是不是想实现属性表的功能?(PropertyGrid)如果你想动态显示属性,可以通过实现ICustomTypeDescriptor、PropertyDescriptor来实现。我记得 Codeproject上有一个资源编辑器的例子,与此类似。
Top
2 楼dy_2000_abc(芝麻开门)回复于 2002-12-15 17:57:43 得分 100
1 双击不太容易实现,具体参照:http://expert.csdn.net/Expert/topic/1034/1034562.xml?temp=.2088434
2 webForm与WinForm的DataGrid有一些差异,WinForm的DataGrid没有类似DataKeyField的属性,你可以在DataAdapter.Fill之前,调用FillSchema或者将 DataAdapter.MissingSchemaAction 设置为 MissingSchemaAction.AddWithKey来获取数据表的全部构架,或者使用DataTable dt; dt.PrimaryKey=DataColumn[]来设置主键,
3 隐藏某些字段:
OleDbConnection conn = new OleDbConnection("...");
OleDbDataAdapter da = new OleDbDataAdapter(selectStr,conn);
DataSet ds = new DataSet();
da.Fill(ds, "abc");
//隐藏某些列
ds.Tables["abc"].Columns["..."].ColumnMapping = MappingType.Hidden;
dataGrid1.DataSource = ds.Tables["abc"];
另一方法是自己构造DataGridTableStyle,然后将它添加到DataGrid.TableStyles集合中。Top




