回《【開源】EFW框架系列文章索引》 html
EFW框架源代碼下載V1.3:http://pan.baidu.com/s/1c0dADO0
前端
EFW框架實例源代碼下載:http://pan.baidu.com/s/1eQCc69G架構
在《二十5、EFW框架Winform前端開發之自定義控件》中列出了EFW框架中的強大自定義控件及每一個控件的API說明,可是對如何使用這些控件還不是很明白,本章經過實例的方式詳細說明GridBoxCard控件的使用方法;框架
本文要點:工具
1.實例功能說明this
2.控件屬性設置編碼
3.編寫後臺代碼spa
效果圖:設計
製做一個書單在網格中,點擊「新增」按鈕網格新增空白行,焦點定位在書籍名稱列,並彈出下拉書籍目錄,能夠經過拼音五筆碼過濾書籍,回車選定書籍添加到網格中,再選擇下一本書籍,如此在網格中生成了一個自定義的書單。code
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「表示能夠經過名稱、拼音碼、五筆碼三個字段進行過濾書籍;
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"]; }
總結:此控件適合於直接在網格中編輯數據的功能,下拉網格數據來源字典數據,這樣用戶操做起來很是直觀;控件簡化了對網格操做控制的代碼,特別是列綁定下拉網格不須要過多代碼,只要設置幾個屬性就好了;