问题目录:
3.dataGridView list泛型数据源,绑定后再次绑定无数据
处理办法,添加按钮print事件 指定按钮的print事件为 Override_print
(摘自网上)
//需要引用命名空间System.Reflection; public void HideFocusCues(Control control) { Type vType = typeof(Control); FieldInfo vFieldInfo = vType.GetField("uiCuesState", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.FlattenHierarchy); vFieldInfo.SetValue(control, 15); } void Override_Paint(object sender, PaintEventArgs e) { HideFocusCues((Control)sender); }
DataSet ds = WfBll.getList(""); dataGridView1.dataSource=ds;
界面上dataGridView1里就是没有数据
而监视ds 里有数据
后来改成了这样
DataSet ds = WfBll.getList(""); dataGridView1.dataSource=ds.tables[0];
就可以了
在B/S结构的网站里 这样写是可以的(数据源指定到一个dataSet也可)。而在这种C/S的结构里数据源就必须制定到具体的表。不知道这是为什么?有知道的可以告诉下
3.dataGridView list泛型数据源,绑定后再次绑定无数据
list<StudentModel> list = new List<StudentModel>(); StudentModel model = new StudentModel(){ StuName="QA龙" }; list.add(model); dataGridView1.dataSource= list; //OK 到这里数据显示正常 //然后我要改变数据源 StudentModel model1 = new StudentModel(){ StuName="张三" }; list.add(model1); dataGridView1.dataSource= list; //这样dataGridView1中就是不显示更改后的值,监视dataSource也是有值就是界面不显示
后来从网上查了查,泛型list做dataGridView的数据源 是存在这个问题。很多童鞋都碰到过.
找了一个比较好的解决办法 将list泛型替换成bindingList专门为绑定提供的泛型就OK了。或者使用dataTable
参考:http://hi.baidu.com/zhangge9477/blog/item/40336802196b3e094afb51ea.html#0
//绑定数据源 DataTable dt = dicBll.GetFieldList("101"); cboDengJSmallC.DataSource = dt; cboDengJSmallC.DisplayMember = "FieldName"; cboDengJSmallC.ValueMember = "FieldValue"; //取值还是比较麻烦的 // cboDengJBigClass.SelectedValue;值为DataRowView类型 //使用如下方法才能取到想要的value值 if (cboDengJBigClass.SelectedIndex != -1) { DataRowView row = (DataRowView)cboDengJBigClass.SelectedValue; BindDengJiSmallClass(row["FieldValue"].ToString()); }
作者:QA龙
出处:http://www.cnblogs.com/liubaolongcool/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。