tft每日頭條

 > 科技

 > datatable動态修改列值

datatable動态修改列值

科技 更新时间:2025-02-09 14:10:32

datatable動态修改列值?接上一篇文章C#控件美化之路(9):美化控件ListBox,我來為大家科普一下關于datatable動态修改列值?以下内容希望對你有幫助!

datatable動态修改列值(C控件美化之路11)1

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<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#美化封裝控件。

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved