C#控件美化之路(11):mfc list控件绑定变量 变量是空_控件ListBox增加DataTable数据绑定功能

接C#控件美化之路(9):美化控件ListBox

主要是功能拓展。一个ListBox 添加数据时候往往都是循环添加

往往在开发中 查询数据库中的内容,然后只需要展示一列数据。一般使用listBox比较多,这篇文章就是将一个DataTable 绑定数据再封装一次。

封装完成后,仅需要一行代码即可完成数据绑定。是不是很方便。在开发中也能事半功倍。

            DataTable dt = new DataTable();
            dt.Columns.Add("ID");
            dt.Columns.Add("Text");
            dt.Columns.Add("Text1");
            for (int i = 0; i < 50; i++)
            {
                dt.Rows.Add(i, "TEST" + i);
            }
            wenListBox1.DataSource = dt;

绑定数据 首先让当前需要绑定数据类型

本文主要讲解绑定DataTable ,在实际开发中DataTable使用是相对比较多。

既然绑定DataTable 就要让在绑定中知道绑定是哪一列数据。这个需要预先配置。

可以增加一个共有属性

       

        [Category("WenData"), Description("绑定数据列"), DefaultValue(null)]
        public string ColumnName { get; set; }


在之后绑定数据,就直接获取DataTable中指定属性列数据。

增加绑定数据接收类,并且接受到数据后绑定处理。

        private object dataSource { get; set; }       
        [Browsable(false)]       
        public object DataSource   
        {      
                    get => dataSource;  
    
            set       
        {          
            if (value != null)         
                {             
                    dataSource = value;  
                    DataBind();        
                }           
        }
        }


绑定数据要检查用户赋值的数据是否为空,若为空,不处理。

实现方法

贴完整代码块

         private void DataBind()     
         {          
             if (dataSource == null)       
                 return;            
             this.Items.Clear();      
             IList lists = null;      
             if (dataSource is DataSet ds)       
             {              
                 lists = ((IListSource)ds.Tables[0]).GetList();  
             }          
             else if (dataSource is IListSource listSource)      
             {             
                 lists = listSource.GetList();       
             }           
             else if (dataSource is IList ilist) 
             {              
                 lists = ilist;  
             }        
             //绑定数据  
             foreach (var ilist in lists)  
             {               
                 if (ilist is DataRowView row)    
                 {                   
                     Items.Add(row[ColumnName]);  
                 }           
                 else               
                 {                
                     List propertyInfos = new List(ilist.GetType().GetProperties());  
                     string value = propertyInfos.Find(a => a.Name.ToUpper() == ColumnName.ToUpper())?.GetValue(ilist, null)?.ToString();  
                     Items.Add(value);           
                 }         
             }      
         }


拓展数据属性,增加了List数据绑定。

本文主要演示如何绑定使用数据,当然在实际使用中避免多次if检查,应该在检查类型后,直接用一个独立方法执行循环,避免多次检查浪费资源,小伙伴可以自己按照需求更改一下即可。

关注文林软控,带你一起用C#美化封装控件。
————————————————
版权声明:本文为CSDN博主「weixin_39847722」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39847722/article/details/111712557

猜你喜欢

转载自blog.csdn.net/lihongmao5911/article/details/115417762