前言:
此刻小伙伴们对“netdatatableadd”大概比较关怀,小伙伴们都想要知道一些“netdatatableadd”的相关内容。那么小编同时在网上搜集了一些有关“netdatatableadd””的相关内容,希望大家能喜欢,你们快快来了解一下吧!接上一篇文章。
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<System.Reflection.PropertyInfo> propertyInfos = new List<System.Reflection.PropertyInfo>(ilist.GetType().GetProperties()); string value = propertyInfos.Find(a => a.Name.ToUpper() == ColumnName.ToUpper())?.GetValue(ilist, null)?.ToString(); Items.Add(value); } } }
拓展数据属性,增加了List数据绑定。
本文主要演示如何绑定使用数据,当然在实际使用中避免多次if检查,应该在检查类型后,直接用一个独立方法执行循环,避免多次检查浪费资源,小伙伴可以自己按照需求更改一下即可。
关注文林软控,带你一起用C#美化封装控件。
标签: #netdatatableadd