一般咱們在處理編輯窗體時。每每會遇到數據綁定。例如combobox控件綁定數據字典多是咱們常常用到的。然而在個人winform快速開發平臺中我是如何處理這個頻繁的操做呢?html
首先,咱們要綁定combobox動態數據,大體都是來自於數據字典的數據綁定,那麼思路來了,咱們須要綁定的是經過獲取字典屬性來綁定ComboBox控件。你們都知道ComboBox控件中存在顯示數據,和值數據對數據值進行綁定。程序員
那麼此時咱們須要定義一個實體類:app
1 /// <summary> 2 /// ComboBoxModel數據綁定實體類 3 /// </summary> 4 public class BaseComboBoxModel 5 { /// <summary> 6 /// 實體編號 7 /// </summary> 8 public string Id { set; get; } 9 /// <summary> 10 /// 樹顯示名稱 11 /// </summary> 12 public string Name { set; get; } 13 }
這個類主要用於處理一個通用的數據集合。這樣便於咱們在後續處理中更加簡潔和方便。框架
對數操做的數據字典相信你們都有本身的通用的框架,EF,dapper,或其餘的ORM 或本身的DBHelper.這些都可有可無。重要的是咱們經過這樣的一個設計讓咱們的代碼更加簡潔。維護起來更加的方便。post
程序的出發點始終是能讓初級程序員寫出高級程序員代碼質量做爲目標。編碼
言歸正傳,對於編輯窗體,咱們須要建立一個FormBaseEdit基窗體。由他來構造咱們大多數的通用方法。咱們在建立關於Edit窗體時進行對FormBaseEdit的繼承。這樣全部有關於Edit級別的操做都會繼承過來。url
咱們在FormBaseEdit窗體的操做方法spa
1 /// <summary> 3 /// 綁定數據字典 5 /// </summary> 7 /// <param name="comboBox">綁定控件</param> 9 /// <param name="key">數據字典編碼</param> 11 public virtual void LoadComboBox(ComboBox comboBox, string key) 13 { 15 var list = _baseDataDictionaryDetailBll.GetDataDictionaryDetailListByCode(key) 17 .Select(p => new BaseComboBoxModel() 19 { 21 Id = p.DataDictionaryId, 23 Name = p.Name 25 }).ToList(); 27 list.Insert(0, new BaseComboBoxModel() { Id = string.Empty, Name = "請選擇" }); 29 comboBox.DataSource = list; 31 comboBox.DisplayMember = "Name"; 33 comboBox.ValueMember = "Id"; 35 }
這樣一個通用的完善的ComboBox綁定控件就已經完成了。設計
經過這樣的構造咱們在項目中在進行對數據字典的數據綁定就駕輕就熟了。咱們的小夥伴不須要關心如何綁定的數據。 只須要在本身的編輯窗體中進行一個數據配置就能夠完成對數據操做。 代碼同時也愈加的簡潔。code
下圖看一下咱們的使用:下圖中簡單的2句話就能夠將數據字典的動態數據綁定到咱們的控件中。用起來仍是蠻方便的。
經過以下方法咱們也能夠綁定一下經常使用的數據如城市聯動菜單:
相同的思路:下面是構建的綁定TreeView的實體結構
1 public class BaseTreeViewModel 2 { 3 /// <summary> 4 /// 實體編號 5 /// </summary> 6 public string Id { set; get; } 7 /// <summary> 8 /// 樹顯示名稱 9 /// </summary> 10 public string Name { set; get; } 11 /// <summary> 12 /// 父編號 13 /// </summary> 14 public string ParentId { set; get; } 15 } 16 17 public class BaseTreeViewMenuModel : BaseTreeViewModel 18 { 19 /// <summary> 20 /// 分類 21 /// </summary> 22 public bool IsForm { set; get; } 23 24 /// <summary> 25 /// 命名空間 26 /// </summary> 27 public string Namespace { set; get; } 28 29 /// <summary> 30 /// 調用類 31 /// </summary> 32 public string Class { set; get; } 33 }
Winform快速開發平臺: 基礎模塊,代碼抽象,通用代碼、代碼生成。 讓程序員有相對較多的時間去專一於業務,擺脫重複性的工做,以及量級別的工做。經過有效的代碼生成,儘量的減小程序員編寫的無用功代碼! 天天進步一點點。
但願你們提供寶貴意見!很是感謝!
Winform快速開發平臺系列:
1.winform快速開發平臺 -> 讓有限的資源創造無限的價值!
3.winform快速開發平臺 -> 綁定ComboBox數據控件