您的位置:首页 > 其它

DataGrid问题汇总

2006-06-01 17:33 183 查看
1:MultiStyleDataGrid控件

MultiStyleDataGrid是这次开发中自己创建的一个有多种ColumnStyle的DataGrid,可以在设计期进行下拉列表字段的直接设置,不需要在运行期用代码一点一点的添加ColumnStyle。

MultiStyleDataGrid的代码大部分来自http://www.microsoft.com/belux/nl/msdn/community/columns/jtielens/datagrid.mspx,其中DataGridComboBoxColumnstyle是在其它地方找到并自行添加进去的。

使用过程中发现DataGridComboBoxColumnStyle在填写新行时表现错误,表现在DataGrid标有行号的新行中直接填写格式为DataGridComboBoxColumnStyle的列时,DataGrid会在这个新行下面自动增加两个新行,而焦点离开时刚刚填入的内容会丢失。

开始对这个问题一筹莫展,后来在找资料时找到了http://www.microsoft.com/china/community/Column/15.mspx Henry对DataGrid事件的说明,其中看到这一段:“在datagrid刚刚执行了选中一行的操作之后,它内嵌的textbox就会引发一个聚焦事件,致使datagrid不再选中一行,而是把焦点更改到你所点击的内嵌textbox中去了。”

看到这一段,我猜测我碰到的问题也是这样的:ComboBoxColumn获得焦点后导致DataGrid自动增加一行,但焦点立刻又被嵌入ComboBoxColumn的Control(不知道是个什么?)获取,导致再次自动增加一行;

了解了这一点后,我参照文中的方法,对DataGridComboBoxColumnStyle中内嵌的ComboBox增加一个Enter事件的处理,在该事件中将焦点设置到ComboBox上,问题解决。

带来的另一个问题,是新增加的行要在ComboxBoxColumn列中添加数据时要点击两次,才能够打开下拉列表选择数据,不知道有没有什么办法能够让ComboBox的下拉列表直接弹出?

不管了,先凑合着用,微软提供的CheckBox列不也是要点击两次才能进行操作吗? :-P

2:DataGrid中的不显示字段是必填的,导致在DataGrid中修改数据时弹出“xxx字段不能为空”

DataGrid中的不显示字段是必填的,导致在DataGrid中修改数据时弹出“xxx字段不能为空”的错误;

解决办法:将DataSet的ForceConstranit和DataGrid的CauseValidation都设为False,在保存前用代码设置DataSet中的必填字段。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息