EFW框架源代碼下載V1.3:http://pan.baidu.com/s/1c0dADO0
EFW框架實例源代碼下載:http://pan.baidu.com/s/1eQCc69G
在《二十五、EFW框架Winform前端開發之自定義控件》中列出了EFW框架中的強大自定義控件及每個控件的API說明,但是對如何使用這些控件還不是很明白,本章通過實例的方式詳細說明GridBoxCard控件的使用方法;
本文要點:
1.實例功能說明
2.控件屬性設置
3.編寫后台代碼
1.實例功能說明
效果圖:
制作一個書單在網格中,點擊“新增”按鈕網格新增空白行,焦點定位在書籍名稱列,並彈出下拉書籍目錄,可以通過拼音五筆碼過濾書籍,回車選定書籍添加到網格中,再選擇下一本書籍,如此在網格中生成了一個自定義的書單。
2.控件屬性設置
1)將工具欄中的GridBoxCard控件拖入窗體,並設置好網格的列;其中ReadOnly屬性為false,打開Columns屬性中“書籍名稱”列的ReadOnly設置為false,其他的幾列都設置為true;
2)設置GridBoxCard控件的一些自定義屬性,特別是SelectionCards屬性,點擊添加一個成員,如果有多列需要綁定下拉網格,那么這里就要添加多個成員,此處只需要將“書籍名稱“這列 綁定下拉網格;
3)需要設置DataGridViewSelectionCard成員的屬性,其中BindColumnIndex為列索引,”書籍名稱“此列的索引是1,所以此處設置為1。其中CardColumn屬性指定下拉網格顯示的列”code|編碼|50,name|名稱|auto“表示顯示兩列”編碼“和”名稱“。其中QueryFieldsString屬性指定過濾網格數據的列名”name,pym,wbm“表示可以通過名稱、拼音碼、五筆碼三個字段進行過濾書籍;
3.編寫后台代碼
1)構建數據源“書籍字典”
//數據源 private DataTable GetData() { DataTable dt = new DataTable(); dt.Columns.Add("code"); dt.Columns.Add("name"); dt.Columns.Add("pym"); dt.Columns.Add("wbm"); dt.Columns.Add("price"); dt.Columns.Add("buydate"); dt.Rows.Add("01", "人月神話", "rysh", "rysh", "12.00", "2014-02-21"); dt.Rows.Add("02", "浪潮之巔", "lczd", "lczd", "12.00", "2014-03-11"); dt.Rows.Add("03", "人件", "rj", "rj", "12.00", "2014-08-01"); dt.Rows.Add("04", "面向對象設計", "mxdxsj", "mxdxsj", "12.00", "2014-12-01"); dt.Rows.Add("05", "架構之美", "jgzm", "jzzm", "12.00", "2014-12-21"); dt.Rows.Add("06", "設計原本", "sjyb", "sjyb", "12.00", "2014-05-21"); dt.Rows.Add("07", "敏捷項目管理", "mjxmgl", "mjxmgl", "12.00", "2014-01-11"); dt.Rows.Add("08", "代碼之美", "dmzm", "dmzm", "12.00", "2014-04-21"); dt.Rows.Add("09", "大道至簡", "dzzj", "ddzj", "12.00", "2014-01-01"); dt.Rows.Add("10", "走出軟件作坊", "zcrjzh", "zcfjzh", "22.00", "2014-02-11"); return dt; }
2)控件綁定數據源,分別給控件的DataSource和控件列的下拉網格綁定數據源
private void Form1_Load(object sender, EventArgs e) { DataTable dtsource = GetData().Clone(); //綁定數據源 gridBoxCard1.DataSource = dtsource; //綁定下拉網格數據源 gridBoxCard1.BindSelectionCardDataSource(0, GetData().Copy()); }
3)點擊“新增”開始編輯網格數據
//新增 private void button1_Click(object sender, EventArgs e) { gridBoxCard1.AddRow(); }
4)選定下拉網格數據賦值給網格控件
//選定下拉網格行,數據賦值 private void gridBoxCard1_SelectCardRowSelected(object SelectedValue, ref bool stop, ref int customNextColumnIndex) { DataTable dt = (DataTable)this.gridBoxCard1.DataSource; int rowindex = gridBoxCard1.CurrentCell.RowIndex; dt.Rows[rowindex]["code"] = ((DataRow)SelectedValue)["code"]; dt.Rows[rowindex]["name"] = ((DataRow)SelectedValue)["name"]; dt.Rows[rowindex]["price"] = ((DataRow)SelectedValue)["price"]; dt.Rows[rowindex]["buydate"] = ((DataRow)SelectedValue)["buydate"]; }
總結:此控件適合於直接在網格中編輯數據的功能,下拉網格數據來源字典數據,這樣用戶操作起來非常直觀;控件簡化了對網格操作控制的代碼,特別是列綁定下拉網格不需要過多代碼,只要設置幾個屬性就行了;