网站首页 > 基础教程 正文
接上一篇文章。
主要是功能拓展。一个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#美化封装控件。
猜你喜欢
- 2025-01-14 手机帝国存档怎么修改 存档简单修改教程
- 2025-01-14 文档在线预览(四) 总结篇
- 2025-01-14 MySQL数据库表碎片收集整理那些事
- 2025-01-14 刘心向学(8)指针数组的应用
- 2025-01-14 一文看懂MySQL如何判断InnoDB表是独立表空间还是共享表空间
- 2025-01-14 SpringBoot实现MySQL数据库自动备份管理系统
- 2025-01-14 一键生成数据库文档,从此告别人工整理文档
- 2025-01-14 all about visitor management system you need to know 03
- 2025-01-14 一篇文章教会你进行Mysql数据库和数据表的基本操作
- 2025-01-14 C#中FastReport报表的使用总结
- 01-14手机帝国存档怎么修改 存档简单修改教程
- 01-14文档在线预览(四) 总结篇
- 01-14MySQL数据库表碎片收集整理那些事
- 01-14刘心向学(8)指针数组的应用
- 01-14C#控件美化之路(11):控件ListBox增加DataTable数据绑定功能
- 01-14一文看懂MySQL如何判断InnoDB表是独立表空间还是共享表空间
- 01-14SpringBoot实现MySQL数据库自动备份管理系统
- 01-14一键生成数据库文档,从此告别人工整理文档
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)