講解winform下拉框綁定數據 winform下拉框控件


講解winform下拉框綁定數據 winform下拉框控件


在Winform開發中,我們往往除了常規的單表信息錄入外,有時候設計到多個主從表的數據顯示、編輯等界面,單表的信息一般就是控件和對象實體一一對應,然后調用API保存即可,主從表就需要另外特殊處理,本隨筆介紹如何快速實現主從表編輯界面的處理,結合GridControl控件的GridView控件對象,實現數據在列表中的實時編輯,非常方便 。
一、主從表的界面設計及展示主從表一般涉及兩個以上的表,一個是主表,其他的是從表的,在實際情況下,一般包含兩個表較多,我們這里以兩個表的主從表關系進行分析處理 。
例如我們建立兩個報銷申請單表關系如下所示 。
對于報銷的主從表信息,我們可以在列表中進行展示,如下界面所示,分為兩部分:一部分是主表信息,一部分是從表信息,單擊主表信息后,顯示對應從表的列表信息 。
那么我們新增一條主表記錄的時候,那么可以彈出一個新的界面進行數據的維護處理,方便我們錄入主從表的信息,界面如下所示 。
上面界面包括了主表信息,以及從表的信息(在GridView中實時錄入)兩部分,這樣填寫后統一進行提交處理 。
二、主從表編輯界面的處理【講解winform下拉框綁定數據 winform下拉框控件】這里主要介紹一下主從表的編輯界面處理,也就是上面這個界面的實現處理 。
其中初始化GridView的代碼如下所示 。
/// /// 初始化明細表的GridView數據顯示/// private void InitDetailGrid(){//初始清空列this.gridView1.Columns.Clear();//設置部分列隱藏this.gridView1.CreateColumn("ID", "編號").Visible = false;this.gridView1.CreateColumn("Header_ID", "主表編號").Visible = false;this.gridView1.CreateColumn("Apply_ID", "申請單編號").Visible = false;//添加下拉列表列,并綁定數據源this.gridView1.CreateColumn("FeeType", "費用類型", 100).CreateComboBox().BindDictItems("費用類型");//創建日期列并指定格式var OccurTime = this.gridView1.CreateColumn("OccurTime", "發生時間", 120).CreateDateEdit();OccurTime.EditMask = "yyyy-MM-dd HH:mm";OccurTime.DisplayFormat.FormatString = "yyyy-MM-dd HH:mm";//創建數值列this.gridView1.CreateColumn("FeeAmount", "費用金額").CreateSpinEdit();//創建備注列this.gridView1.CreateColumn("FeeDescription", "費用說明", 200).CreateMemoEdit();//初始化GridView,可以新增列this.gridView1.InitGridView(GridType.NewItem, false, EditorShowMode.MouseDownFocused, "");//轉義列內容顯示this.gridView1.CustomColumnDisplayText= new CustomColumnDisplayTextEventHandler(gridView1_CustomColumnDisplayText);//處理單元格的樣式this.gridView1.RowCellStyle= new RowCellStyleEventHandler(gridView1_RowCellStyle);//不允許頭部排序this.gridView1.OptionsCustomization.AllowSort = false;//繪制序號this.gridView1.CustomDrawRowIndicator= (s, e) =>{if (e.Info.IsRowIndicator && e.RowHandle >= 0){e.Info.DisplayText = (e.RowHandle1).ToString();}};//對輸入單元格進行非空校驗this.gridView1.ValidateRow= delegate(object sender, ValidateRowEventArgs e){var result = gridControl1.ValidateRowNull(e, new string[]{"FeeType"});};//新增行的內容初始化this.gridView1.InitNewRow= (s, e) =>{gridView1.SetRowCellValue(e.RowHandle, "ID", Guid.NewGuid().ToString());gridView1.SetRowCellValue(e.RowHandle, "Header_ID", tempInfo.ID);gridView1.SetRowCellValue(e.RowHandle, "Apply_ID", tempInfo.Apply_ID);gridView1.SetRowCellValue(e.RowHandle, "OccurTime", DateTime.Now);};}void gridView1_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e){GridView gridView = this.gridView1;if (e.Column.FieldName == "FeeAmount"){e.Appearance.BackColor = Color.Green;e.Appearance.BackColor2 = Color.LightCyan;}}void gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e){string columnName = e.Column.FieldName;if (e.Column.ColumnType == typeof(DateTime)){if (e.Value != null){if (e.Value =https://www.shwenmu.com/wenda/= DBNull.Value || Convert.ToDateTime(e.Value)

推薦閱讀