DataGrid动态绑定,既不知道Class的结构

DataGrid动态绑定,既不知道Class的结构,第1张

概述  DataGrid动态绑定,既不知道Class的结构 http://www.cppblog.com/yanjie2500/archive/2011/02/22/140454.html    datagrid是silverlight中相对独立且相对复杂的控件。 正常使用过程中 我们需要明确一个具体的类结构如下 public class BasicInfo {     public string i   DataGrid动态绑定,既不知道Class的结构 http://www.cppblog.com/yanjie2500/archive/2011/02/22/140454.html

   datagrID是silverlight中相对独立且相对复杂的控件。
正常使用过程中 我们需要明确一个具体的类结构如下
public class BasicInfo
{
    public string ID { set; get; }
    public string name { set; get; }
    public string tel { set; get; }
}
如果DataGrID是autoGenerateColumns="True" 则只需要绑定 DataGrID.ItemsSource = List<BasicInfo>
则出现以ID,name,tel为列头的列表。这个很明显不符合中文开发者使用,至少ID,name肯定得是明确表达意义的中文名。
如果autoGenerateColumns="False" 则可以自行定制列头内容,但不管怎样,我们都需要一个固定的类如上BasicInfo类。

   我接触DataGrID的时候我不能有明确的类,因为我的值取自数据库中动态的表。不确定表名,不确定字段名,和字段个数。
用一段代码来描述 我希望我的DataGird绑定的数据能像下面的代码那样简单
List.Add(new string[] {"ID","姓名","年龄","性别","毕业院校" });
List.Add(new string[] {"1","zhangli","19","男","武汉大学"});
List.Add(new string[] { "2","liuli","女","华中科技大学" });
List.Add(new string[] { "3","zhuxi","黄埔军校"});
心神不宁的Google一番后
http://www.cnblogs.com/Ivan-Yan/archive/2009/05/27/1490667.html此人博客‘通过 IDictionary对Silverlight DataGrid 进行动态数据绑定’貌似可以解决我一部分需求 但他的方法还是xaml部分太固定。列个数 列头,绑定字段都不太自由。

万能绑定类
public class BingClass : IEditableObject                 //实现这个接口的目的是需要在界面被编辑时处理一些事件
        {
            public String key0 { get; set; }
            public string key1 {get;set;}
            public String key2{get;set;} 
            ………
            public String key19{get;set;} 
以下可能足够长, 我的需求不超过20个字段,可以放心 这些字段不必要全部初始化 留null不会占用内存空间。
public String[] keyarr = new string[20];                 //这个集合保存上面所有key0~key19的引用
public string[] keystrarr =                                   //属性的字符表示
            {
                "key0","key1","key2","key3","key4","key5","key6","key7","key8","key9",
                "key10","key11","key12","key13","key14","key15","key16","key17","key18","key19"
            };
很重要的refresh方法
public voID refresh()
            {
                key0 = keyarr[0]; key1 = keyarr[1]; key2 = keyarr[2]; key3 = keyarr[3]; key4 = keyarr[4];
                key5 = keyarr[5]; key6 = keyarr[6]; key7 = keyarr[7]; key8 = keyarr[8]; key9 = keyarr[9];
                key10 = keyarr[10]; key11 = keyarr[11]; key12 = keyarr[12]; key13 = keyarr[13]; key14 = keyarr[14];
                key15 = keyarr[15]; key16 = keyarr[16]; key17 = keyarr[17]; key18 = keyarr[18]; key19 = keyarr[19];
            }
绑定数据
public List<BingClass> columndisplay(DataGrID grID,List<string[]> List)
           {
              List<BingClass> reList = new List<BingClass>();       //需要经过一系列讲List<string[]> 转换为List<BingClass>
               for (int num = 0; num < List[0].Length; num++)
               {
                   //DataGrIDTextColumn 在C#中定义,使xaml自由一点
                   DataGrIDTextColumn column = new DataGrIDTextColumn();                   
                   Binding binding = new Binding(keystrarr[num]);      //这部分很重要 定义该列绑定指定的属性列
                   grID.FroZenColumnCount = 1;
                   binding.Mode = BindingMode.TwoWay;
                   column.Binding = binding;                   
                   column.header = List[0][num];                //注意我的List第一行是中文字段名用作DataGird列名
                   grID.Columns.Add(column);
               }
               for (int i = 1; i < List.Count; i++)              //List<string[]> 转换为List<BingClass>
               {
                   string[] strs = List[i];
                   BingClass bing = new BingClass();
                   for (int j = 0; j < strs.Length; j++)
                   {
                       bing.keyarr[j] = strs[j];
                   }
                   bing.refresh();                               //很重要,使集合中的值赋给各个key属性
                   reList.Add(bing);
               }
               grID.ItemsSource = reList;                       //费这么大功夫就为了这一行……
               return reList;
           }

使用
List.Add(new string[] {"ID","黄埔军校"});
bingclass = new BingClass();
reList = bingclass.columndisplay(dataGrID1,List);       

The Last   

总结

以上是内存溢出为你收集整理的DataGrid动态绑定,既不知道Class的结构全部内容,希望文章能够帮你解决DataGrid动态绑定,既不知道Class的结构所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1073270.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存