一 、GridControl的刪除操作
private void rILinkEditInfoDel_Click(object sender, EventArgs e) { if (XtraMessageBox.Show("請確定是否刪除當前記錄?", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { DataRow row = gvInfos.GetDataRow(gvInfos.FocusedRowHandle); delByCode(row["Code"].ToString()); XtraMessageBox.Show("操作成功!"); } }
二、繫結非資料表中列
Hashtable ht = new Hashtable(); private void gridView6_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e) { GridView View = sender as GridView; if (e.RowHandle >= 0) { object needAlert = View.GetRowCellValue(e.RowHandle, View.Columns["needAlert"]); if (needAlert != null & needAlert != DBNull.Value && needAlert.ToString().Trim() != "0" & View.GetRowCellValue(e.RowHandle, View.Columns["Value"]) != DBNull.Value) { decimal AverValue = Convert.ToDecimal(View.GetRowCellValue(e.RowHandle, View.Columns["Value"])); object MinValue = View.GetRowCellValue(e.RowHandle, View.Columns["MinValue"]); object MaxVlaue = View.GetRowCellValue(e.RowHandle, View.Columns["MaxValue"]); if (MinValue != DBNull.Value & MinValue != null & MaxVlaue.ToString() != "" & MaxVlaue != DBNull.Value && MaxVlaue != null & MaxVlaue.ToString() != "") { decimal gridColumn2 = Convert.ToDecimal(View.GetRowCellValue(e.RowHandle, View.Columns["MinValue"])); decimal gridColumn1 = Convert.ToDecimal(View.GetRowCellValue(e.RowHandle, View.Columns["MaxValue"])); if (gridColumn2 > AverValue || AverValue > gridColumn1) { if (!ht.ContainsKey("pic")) ht.Add("pic", GetImage(1)); e.Value = ht["pic"]; } } } } } /// <summary> /// 由資原始檔獲取圖片 /// </summary> /// <param name="key"></param> /// <returns></returns> byte[] GetImage(int key) { Image img = DevExpress.Utils.Controls.ImageHelper.CreateImageFromResources(string.Format("RiverSys.Resources.{0}.gif", key.ToString()), typeof(RiverInfos).Assembly); return DevExpress.XtraEditors.Controls.ByteImageConverter.ToByteArray(img, ImageFormat.Gif); } /// <summary> /// 動態根據條件設定行樣式 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void gridView6_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e) { GridView View = sender as GridView; if (e.RowHandle >= 0) { object needAlert = View.GetRowCellValue(e.RowHandle, View.Columns["needAlert"]); if (needAlert != null & needAlert != DBNull.Value && needAlert.ToString().Trim() != "0" & View.GetRowCellValue(e.RowHandle, View.Columns["Value"]) != DBNull.Value) { decimal AverValue = Convert.ToDecimal(View.GetRowCellValue(e.RowHandle, View.Columns["Value"])); object MinValue = View.GetRowCellValue(e.RowHandle, View.Columns["MinValue"]); object MaxVlaue = View.GetRowCellValue(e.RowHandle, View.Columns["MaxValue"]); if (MinValue != DBNull.Value & MinValue != null & MaxVlaue.ToString() != "" & MaxVlaue != DBNull.Value && MaxVlaue != null & MaxVlaue.ToString() != "") { decimal gridColumn2 = Convert.ToDecimal(MinValue); decimal gridColumn1 = Convert.ToDecimal(MaxVlaue); if (gridColumn2 > AverValue || AverValue > gridColumn1) { e.Appearance.ForeColor = Color.Red; e.Appearance.BackColor = Color.LightGray; } } } } }
三、GridControl 中顏色選擇控制元件
private void gvMapColor_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e) { GridView view = sender as GridView; DataView dv = view.DataSource as DataView; if (e.IsGetData) { string strVal = dv[e.ListSourceRowIndex]["Color"].ToString(); if (strVal != "") { //e.Value = DevExpress.Utils.StyleLayout.ColorFromString(strVal); e.Value = Common.HexToColor(strVal); } } else { //Color colorVal = DevExpress.Utils.StyleLayout.ColorFromString(e.Value.ToString()); Color colorVal = (Color)e.Value; dv[e.ListSourceRowIndex]["Color"] = Common.RGB_HEX(colorVal.ToArgb()); } }
四、關於 GridControl 驗證示例
/**//// <summary> /// 初始化GridView,繫結資料 /// </summary> /// <param name="parentId"></param> private void GridViewBindData(string parentId) { this.gridView1.Columns.Clear(); this.FDs= areaSetupActionHelper.getDsRegionByParentId(parentId); this.gridCArea.DataSource =this.FDs.Tables[0].DefaultView; this.gridView1.Columns["id"].VisibleIndex = -1; this.gridView1.Columns["childCounts"].VisibleIndex = -1; this.gridView1.Columns["reg_id"].Caption = "區劃編號"; this.gridView1.Columns["reg_name"].Caption = "區劃名稱"; this.gridView1.Columns["parent_id"].Caption = "父區劃編號"; this.gridView1.Columns["reg_desc"].Caption = "區劃描述"; this.gridView1.Columns["parent_id"].ImageIndex =1; this.gridView1.Columns["reg_desc"].ImageIndex = 0; RepositoryItemTextEdit textEditReg_Id = new RepositoryItemTextEdit(); textEditReg_Id.Mask.EditMask =parentId+"\\d{2,3}"; textEditReg_Id.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Regular; this.gridView1.Columns["reg_id"].ColumnEdit = textEditReg_Id; this.gridView1.Columns["reg_desc"].ColumnEdit = new RepositoryItemMemoExEdit(); TreeListNode node = this.treelArea.FocusedNode.ParentNode; string fid = node==null?"0":node.GetValue("RegID").ToString().Trim(); DataSet ds = areaSetupActionHelper.getDsRegionByParentId(fid); RepositoryItemLookUpEdit lookUEParent_Id = new RepositoryItemLookUpEdit(); lookUEParent_Id.Columns.Add(new LookUpColumnInfo("reg_id", 40, "區劃編號")); lookUEParent_Id.Columns.Add(new LookUpColumnInfo("reg_name", 40, "區劃名稱")); lookUEParent_Id.DataSource = ds.Tables[0].DefaultView; lookUEParent_Id.ValueMember = "reg_id"; lookUEParent_Id.DisplayMember = "reg_id"; this.gridView1.Columns["parent_id"].ColumnEdit = lookUEParent_Id; } /**//// <summary> /// gridView單元格驗證的相關處理程式 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void gridView1_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e) { if (e.Valid == false&this.gridView1.FocusedColumn.FieldName == "reg_id") { e.ErrorText = "區劃編號不合法!\n應為父區劃編號加2~3位資料組成!"; } if (this.gridView1.FocusedColumn.FieldName == "reg_name") { Regex reg=new Regex(@"[\u4e00-\u9fa5]{1,20}"); Match m=reg.Match(e.Value.ToString().Trim()); if (m.Length != e.Value.ToString().Trim().Length) { e.Valid = false; e.ErrorText = "區劃名稱應為漢字\n長度為1至20"; } } } private void gridView1_InvalidValueException(object sender, InvalidValueExceptionEventArgs e) { if (MyDialog.Alert(" 您所填寫的內容不符合規則\n 要放棄您剛才對此項所做的更改嗎?", "您所編輯的內容不符合規則", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { e.ExceptionMode = ExceptionMode.Ignore; } } /**//// <summary> /// gridView行驗證的相關處理程式 /// </summary> private void gridView1_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e) { string regid = this.gridView1.GetRowCellValue(e.RowHandle, "reg_id").ToString().Trim(); string regName = this.gridView1.GetRowCellValue(e.RowHandle, "reg_name").ToString().Trim(); if ( regid.Length < 1) { e.Valid = false; this.gridView1.SetColumnError(this.gridView1.Columns["reg_id"], "請填寫區劃編號!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Default); // e.ErrorText = "區劃名稱不能為空!"; } if (regName.Length < 1) { e.Valid = false; this.gridView1.SetColumnError(this.gridView1.Columns["reg_name"], "區劃名稱不能為空!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Default); } } private void gridView1_InvalidRowException(object sender, DevExpress.XtraGrid.Views.Base.InvalidRowExceptionEventArgs e) { if (e.RowHandle >= 0) { if (this.gridView1.GetRowCellValue(e.RowHandle, this.gridView1.Columns["reg_id"]).ToString().Trim() == "" || this.gridView1.GetRowCellValue(e.RowHandle, this.gridView1.Columns["reg_name"]).ToString().Trim() == "") { if (MyDialog.Alert(" 您所填寫的內容不符合規則\n 要放棄您剛才對此項所做的更改嗎?", "您所編輯的內容不符合規則", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { e.ExceptionMode = ExceptionMode.Ignore; } else { e.ExceptionMode = ExceptionMode.NoAction; } } } else { e.ExceptionMode = ExceptionMode.Ignore; } }
文章轉載自:DevExpress控制元件中文網 [http://www.devexpresscn.com/]