[★★★]我用 datagridView 或 GridView 绑定了一个, 实现IList接口的类,自动生成的列,排序有问题 Product P = new Product(); this.dataGridView1.DataSource = P.ShowProductInfo()楼主您直接这样绑定,系统会按字段名的字母先后顺序绑定到各列.您只要在界面上,定义每一列及绑定即可. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 --------本来 我开始是 指定列的。 数据全部显示出来了。。当然列的顺序也对。刚好和 我数据库中列的 顺序相对应。。但是取值的时候,比如说在 datagridview 中this.datagridview.currentrow.cell[0].value . 他可能得到的 不是 第一列的值。。而 他取值的 顺序 ,可能 刚好 和自动生成列的 顺序相同。。this.datagridview.currentrow.cell[0].value 界面上明明是 第一列。。可能取出来就是 第三列 Nhibernate查询数据显示在DataGridView中的解决方法 原创: Ankoe 前言 Nhibernate 查询数据返回集合为 Ilist 类型,由于 Ilist 实现了 Collection ,所以当 Ilist 绑定到 DataGridView 时,显示的字段并未按真实的顺序排序,造成显示的不适当。可以采用两种解决方法: 方法一:将 Ilist 转换成 DataSet 注: iList: 数据源 className: 类完全限定名 DllFile:className 所属的程序集名 如 :SysGUI.QdcLib.dll public DataSet ConvertIListToDataSet(IListiList, stringclassName, stringDllFile) { Type TheType = null; if (DllFile != "") { Assembly Assembly1 = Assembly.LoadFrom(DllFile); TheType = Assembly1.GetType(className); } else { TheType = Type.GetType(className); } string sTableName = NHibernate.Cfg.ImprovedNamingStrategy.Instance.ClassToTableName(className); BindingFlags bindFlag = BindingFlags.Public | BindingFlags.Instance; PropertyInfo[] pInfos = TheType.GetProperties(bindFlag); DataSet dSet = newDataSet(); DataTable dTable = dSet.Tables.Add(sTableName); string strColmunName =""; foreach (PropertyInfoinfoinpInfos) { strColmunName = NHibernate.Cfg.ImprovedNamingStrategy.Instance.PropertyToColumnName(info.Name); dTable.Columns.Add(strColmunName, info.PropertyType.GetType()); } foreach(objectobjiniList){ DataRow dRow = dTable.NewRow(); foreach(PropertyInfoinfoinpInfos){ strColmunName = NHibernate.Cfg.ImprovedNamingStrategy.Instance.PropertyToColumnName(info.Name); dRow[strColmunName] = info.GetValue(obj, null); } dTable.Rows.Add(dRow); } return dSet; } 上面采用反射根据属性名及类型信息生成一个DataTable,然后用Ilist数据填充DataTable,这种方法有个不好的地方就是如果数据量大的时候,严重造成了程序的性能损失。 方法二:建一个表来保存所有表的字段信息,DataGridView加载Ilist数据以后再改变DataGirdView的显示方式。和方法一相比少了数据得制,性能也得以提 太 麻烦了 为软 既然 提供了 Ilist 数据源 ,怎么会有 这么 多问题。。 关于压缩解压的问题 Response.AddCacheDependency webrequest.getresponse()远程服务器返回错误: (403) 已禁止 急求答案 怎样编写用鼠标来控制所调用图像大小的程序 (高分)急!求教高手,在线等回复 关于treeList的问题,高手请进。 请问如何在结构中声明数组 C#动态编译执行C++代码 求大大幫個忙....有關WINCE6.0 攝像頭解二維碼 C# 数据集大量出错,救命 关于oleCommand 想做类似于MSN Messenger的网络即时通信程序,用C#,在 Socket流 和 Remoting 之间应该如何选择?
数据全部显示出来了。。当然列的顺序也对。刚好和 我数据库中列的 顺序相对应。。但是取值的时候,比如说在 datagridview 中
this.datagridview.currentrow.cell[0].value . 他可能得到的 不是 第一列的值。。而 他取值的 顺序 ,可能 刚好 和自动生成列的 顺序相同。。this.datagridview.currentrow.cell[0].value 界面上明明是 第一列。。可能取出来就是 第三列
原创: Ankoe 前言 Nhibernate 查询数据返回集合为 Ilist 类型,由于 Ilist 实现了 Collection ,所以当 Ilist 绑定到 DataGridView 时,显示的字段并未按真实的顺序排序,造成显示的不适当。可以采用两种解决方法: 方法一:将 Ilist 转换成 DataSet 注: iList: 数据源 className: 类完全限定名 DllFile:className 所属的程序集名 如 :SysGUI.QdcLib.dll public DataSet ConvertIListToDataSet(IListiList, stringclassName, stringDllFile) { Type TheType = null; if (DllFile != "") { Assembly Assembly1 = Assembly.LoadFrom(DllFile); TheType = Assembly1.GetType(className); } else { TheType = Type.GetType(className); } string sTableName = NHibernate.Cfg.ImprovedNamingStrategy.Instance.ClassToTableName(className); BindingFlags bindFlag = BindingFlags.Public | BindingFlags.Instance; PropertyInfo[] pInfos = TheType.GetProperties(bindFlag); DataSet dSet = newDataSet(); DataTable dTable = dSet.Tables.Add(sTableName); string strColmunName =""; foreach (PropertyInfoinfoinpInfos) { strColmunName = NHibernate.Cfg.ImprovedNamingStrategy.Instance.PropertyToColumnName(info.Name); dTable.Columns.Add(strColmunName, info.PropertyType.GetType()); } foreach(objectobjiniList){ DataRow dRow = dTable.NewRow(); foreach(PropertyInfoinfoinpInfos){ strColmunName = NHibernate.Cfg.ImprovedNamingStrategy.Instance.PropertyToColumnName(info.Name); dRow[strColmunName] = info.GetValue(obj, null); } dTable.Rows.Add(dRow); } return dSet; } 上面采用反射根据属性名及类型信息生成一个DataTable,然后用Ilist数据填充DataTable,这种方法有个不好的地方就是如果数据量大的时候,严重造成了程序的性能损失。 方法二:建一个表来保存所有表的字段信息,DataGridView加载Ilist数据以后再改变DataGirdView的显示方式。和方法一相比少了数据得制,性能也得以提