using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using DevExpress.XtraGrid.Views.Grid; using DevExpress.XtraGrid; using DevExpress.XtraGrid.Columns; using DevExpress.Utils; using CommonLib; using DevExpress.XtraEditors.Repository; using DevExpress.XtraEditors.Controls; using System.Text.RegularExpressions; using Lskj.MyControl.LookUp; using DevExpress.XtraEditors; using Lskj.PubUtils; using DevExpress.Data; using DevExpress.XtraGrid.Menu; using DevExpress.Utils.Menu; using DevExpress.XtraGrid.Views.Base; using ControlLib.inh; using DevExpress.XtraPrinting; using Lskj.Common; using System.Data.SqlClient; namespace Lskj.MyControl { public partial class GridControlEx : UserControl { public GridView gridView { get { return gridView1; } } public GridControl gridControl { get { return gridMain; } } public string Sql { get; set; } public string sqlC { get; set; } public string ConstSql { get; set; } public int SourceType { get; set; } public bool IsColumnFix; public bool IsSaveColumn = true; public string loadBom { get; set; } public string bomSql { get; set; } public string bomCaption { get; set; } public string detailEnableCond { get; set; } public string detailEnableMsg { get; set; } public static string OperatorId { get; set; } public static string OperatorName { get; set; } public bool AddCopyRows; public string ColumnPrefix; public string GridText; private string headerColor = "#A0A0A0"; private bool isCancel = false; private double customSum = 0.00; private Dictionary dicSum; private Dictionary> lookupDatas; public Dictionary lookupTables; private bool inSummary = false; private bool isSetColumnWidth = false; private DataTable clipTable; public DataTable SumFieldsTable { get; set; } private DataTable dtColumns; /// /// 当前设置列方式 /// private int _currentSetColumnType; private string ColumnSQL = string.Empty; /// /// 禁用表格是否需要改变表格颜色 /// public bool UnAllowEditChangeColor { get; set; } /// /// 表格列信息保存需要的信息 /// public string ModuleKey; //关键字 public string FormKey; public int ModuleType; //模块类型//基础档案 /// /// 0.默认列跳转,1为行跳转 /// public int EnterOrder; //报表明细 //单据明细 //来源主信息 //来源明细信息 //单据来源主信息 public Control pnlMain { get; set; } public GridControlEx() { InitializeComponent(); gridView1.IndicatorWidth = 40; gridView1.KeyDown += new KeyEventHandler(gridView1_KeyDown); gridView1.Appearance.HeaderPanel.Font = new Font("宋体", 9); gridView1.Appearance.HeaderPanel.TextOptions.HAlignment = HorzAlignment.Center; gridView1.Appearance.Preview.Font = new Font("宋体", 9); gridView1.Appearance.Row.Font = new Font("宋体", 9); //gridView1.RowCellStyle += new RowCellStyleEventHandler(gridView1_RowCellStyle); gridView1.RowStyle += new RowStyleEventHandler(gridView1_RowStyle); gridView1.SelectionChanged += new DevExpress.Data.SelectionChangedEventHandler(gridView1_SelectionChange); gridView1.ShowingEditor += new CancelEventHandler(gridView1_CancelEditor); gridView1.PopupMenuShowing += new PopupMenuShowingEventHandler(gridView1_PopupMenuShowing); gridView1.CustomSummaryCalculate += new CustomSummaryEventHandler(gridView1_CustomSummaryCalculate); //gridView1.OptionsView.AllowCellMerge = true; gridView1.OptionsSelection.MultiSelect = true; gridView1.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CellSelect; gridView1.OptionsBehavior.EditorShowMode = EditorShowMode.MouseDownFocused; gridView1.CustomColumnDisplayText += new DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventHandler(gridView1_CustomColumnDisplayTextEventHandler); gridView1.CellValueChanged += new DevExpress.XtraGrid.Views.Base.CellValueChangedEventHandler(gridBillInfo_CellValueChanged); gridView1.OptionsView.RowAutoHeight = true; gridView1.OptionsBehavior.CopyToClipboardWithColumnHeaders = false; gridView1.DoubleClick += new EventHandler(gridView1_DoubleClick); dicSum = new Dictionary(); lookupDatas = new Dictionary>(); lookupTables = new Dictionary(); clipTable = new DataTable(); AddCopyRows = false; ColumnPrefix = ""; OperatorId = ERPInfo.Instance.EmployeeId.ToString(); OperatorName = ERPInfo.Instance.EmployeeName.ToString(); } void gridView1_RowStyle(object sender, RowStyleEventArgs e) { if (e.RowHandle >= 0) { DataRow row = this.gridView.GetDataRow(e.RowHandle); if (row == null) return; //颜色集合 DataTable dt = RowColorCondtion as DataTable; if (dt == null) return; //选择列 string cond = string.Empty; string color = string.Empty; string forecolor = string.Empty; if (dt != null && dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { cond = dr["condition"].ToString(); List condition = GetParamValue(cond); foreach (string item in condition) { string filedName = item.Replace("{", "").Replace("}", ""); if (row.Table.Columns.Contains(filedName)) { string dataType = row.Table.Columns[filedName].DataType.ToString(); if (!dataType.Equals("decimal")) cond = cond.Replace(item, row[filedName].ToString()); else cond = cond.Replace(item, string.IsNullOrWhiteSpace(row[filedName].ToString()) ? "0" : row[filedName].ToString()); } else cond = cond.Replace(item, "0"); } cond = SqlToCode(cond); color = dr["backcolor"] + ""; forecolor = dr["forcecolor"].ToString() + ""; string obj = Evaluator.Eval(cond) + ""; if (obj.IndexOf("true", StringComparison.OrdinalIgnoreCase) != -1) { if (!string.IsNullOrEmpty(color)) { System.Drawing.Color color1 = System.Drawing.ColorTranslator.FromHtml(color); e.Appearance.BackColor = color1; } if (!string.IsNullOrEmpty(forecolor)) { System.Drawing.Color foreColor = System.Drawing.ColorTranslator.FromHtml(forecolor); e.Appearance.ForeColor = foreColor; } FontStyle fst = new FontStyle(); if (dr["ifBold"].ToString() == "1") { fst = fst | FontStyle.Bold; } if (dr["ifItalic"].ToString() == "1") { fst = fst | FontStyle.Italic; } if (dr["ifStrickOut"].ToString() == "1") { fst = fst | FontStyle.Strikeout; } if (dr["ifUnderLine"].ToString() == "1") { fst = fst | FontStyle.Underline; } e.Appearance.Font = new Font(e.Appearance.Font, fst); } } } } } private void gridView1_DoubleClick(object sender, EventArgs e) { if (gridControl.ContextMenuStrip != null) { foreach (ToolStripMenuItem item in gridControl.ContextMenuStrip.Items) { if (item.Tag == null) continue; DataRow dr = item.Tag as DataRow; if (dr == null) continue; if (dr.Table.Columns.Contains("DBClickEvent")) { if (dr["DBClickEvent"] + "" == "1") { string menuCond = dr["menuCond"] + ""; int[] rows = gridView1.GetSelectedRows(); if (rows != null && rows.Count() > 0) { DataRow row = gridView1.GetDataRow(rows[0]); menuCond = ReqSqlParam(menuCond, OperatorId, OperatorName); menuCond = ReqSqlWhere(row, menuCond); bool isEnabled = false; try { isEnabled = string.IsNullOrWhiteSpace(menuCond) || Convert.ToBoolean(Evaluator.Eval(menuCond)); } catch (Exception) { XtraMessageBox.Show(string.Format("{0} 配置条件错误,请检查.", dr["menuName"])); } if (isEnabled) { item.PerformClick(); } else { XtraMessageBox.Show("当前选择数据不满足条件."); } break; } } } } } } public void reloadDictionary() { foreach (GridColumn gc in gridView1.Columns) { if (!(gc.ColumnEdit is RepositoryItemSearchLookUpEdit)) continue; RepositoryItemSearchLookUpEdit combox = gc.ColumnEdit as RepositoryItemSearchLookUpEdit; LookUpTag ltag = combox.Tag as LookUpTag; if (ltag != null) { String SQL = ltag.Sql; if (SQL != null) { SQL = Regex.Replace(SQL, "#[^##]+#", " 1=1 "); DataTable dtTable = SqlHelper.ExecuteDataSet(SQL).Tables[0]; combox.DataSource = dtTable; } } } } #region 处理Grid计算 private void gridBillInfo_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) { MyTagModel tag = e.Column.Tag as MyTagModel; if (tag.unionFields + "" != "") setUnionValue(e.Column, e.Value); if (SumFieldsTable == null) return; if (inSummary) return; inSummary = true; string calcSource = string.Empty; try { DataRow gvRow = gridView.GetDataRow(e.RowHandle); foreach (DataRow row in SumFieldsTable.Rows) { bool ifTruncate = false; string calcExpr = row["calcExpr"].ToString(); if (calcExpr.IndexOf("@truncate:", StringComparison.OrdinalIgnoreCase) != -1) { calcExpr = calcExpr.Substring(10); ifTruncate = true; } // 注释此代码会导致公式 a+1=b c+1=d 计算正常,此时手动修改b的值,在输入c的值时会同时计算b的值,导致无法修改。 //if (calcExpr.IndexOf("{" + e.Column.FieldName + "}", StringComparison.OrdinalIgnoreCase) != -1) { try { calcSource = calcExpr; if (e.Column.FieldName != row["fieldName"].ToString()) { List listParam = GetParamValue(calcExpr); foreach (string str in listParam) { string filed = str.Replace("{", "").Replace("}", ""); string filedValue = ""; if (gvRow.Table.Columns.Contains(filed)) { filedValue = gvRow[filed].ToString(); if (string.IsNullOrEmpty(filedValue)) filedValue = "0"; calcExpr = calcExpr.Replace(str, filedValue + ""); } //根据单据头变量替换 if (pnlMain != null) { Control[] ctrs = pnlMain.Controls.Find("txt_" + filed, true); if ((ctrs != null) && (ctrs.Length > 0)) { filedValue = GetControlText(ctrs[0]); calcExpr = calcExpr.Replace(str, filedValue + ""); } } } try { calcExpr = calcExpr.Replace("=", "==").Replace("<>", "!=").Replace("and", "&&").Replace("or", "|").Replace("--", "+"); string result = Evaluator.Eval(calcExpr).ToString(); double d = 0; if (!string.IsNullOrEmpty(result) && !"NaN".Equals(result, StringComparison.OrdinalIgnoreCase) && !"非数字".Equals(result, StringComparison.OrdinalIgnoreCase) && !"undefined".Equals(result, StringComparison.OrdinalIgnoreCase) && result != "∞" && result != "-∞" && !"正无穷大".Equals(result, StringComparison.OrdinalIgnoreCase) && !"负无穷大".Equals(result, StringComparison.OrdinalIgnoreCase) && double.TryParse(result, out d)) { //MessageBox.Show("公式:" + calcExpr + ";值:" + result); int idataDec = 2; if (row.Table.Columns.Contains("DataDec")) idataDec = int.Parse(row["DataDec"].ToString()); if (ifTruncate) { if (result.IndexOf(".") == -1) result = result + ".0000000000"; else result = result + "0000000000"; gvRow[row["fieldName"].ToString()] = result.Substring(0, result.IndexOf(".")) + result.Substring(result.IndexOf("."), idataDec + 1); //gridView.SetRowCellValue(e.RowHandle, gridView.Columns[row["fieldName"].ToString()], //result.Substring(0, result.IndexOf(".")) + result.Substring(result.IndexOf("."), idataDec + 1)); } else { gvRow[row["fieldName"].ToString()] = Math.Round(d, idataDec, MidpointRounding.AwayFromZero); //gridView.SetRowCellValue(e.RowHandle, gridView.Columns[row["fieldName"].ToString()], Math.Round(d, idataDec, MidpointRounding.AwayFromZero)); //gridView.UpdateCurrentRow(); } } } catch (Exception) { } } } catch (Exception ex) { //gridView.SetRowCellValue(e.RowHandle, gridView.Columns[row["fieldName"].ToString()], 0); //MessageBox.Show("计算公式定义错误:" + calcSource + " >> " + calcExpr + "\n" + ex.Message); } } } } catch { //MessageBox.Show("计算公式定义错误:" + calcSource + "\n" + ex.Message); } inSummary = false; } #endregion public void setCalcExpr(DataRow row, int RowHandle) { DataRow gvRow = gridView.GetDataRow(RowHandle); bool ifTruncate = false; string calcExpr = row["calcExpr"].ToString(); if (calcExpr.IndexOf("@truncate:", StringComparison.OrdinalIgnoreCase) != -1) { calcExpr = calcExpr.Substring(10); ifTruncate = true; } //if (e.Column.FieldName != row["fieldName"].ToString()) //{ List listParam = GetParamValue(calcExpr); foreach (string str in listParam) { string filed = str.Replace("{", "").Replace("}", ""); string filedValue = ""; if (gvRow.Table.Columns.Contains(filed)) { filedValue = gvRow[filed].ToString(); if (string.IsNullOrEmpty(filedValue)) filedValue = "0"; calcExpr = calcExpr.Replace(str, filedValue + ""); } //根据单据头变量替换 if (pnlMain != null) { Control[] ctrs = pnlMain.Controls.Find("txt_" + filed, true); if ((ctrs != null) && (ctrs.Length > 0)) { filedValue = GetControlText(ctrs[0]); calcExpr = calcExpr.Replace(str, filedValue + ""); } } } calcExpr = calcExpr.Replace("=", "==").Replace("<>", "!=").Replace("and", "&&").Replace("or", "|").Replace("--", "+"); string result = Evaluator.Eval(calcExpr).ToString(); int idataDec = 2; if (row.Table.Columns.Contains("DataDec")) idataDec = int.Parse(row["DataDec"].ToString()); try { if (ifTruncate) { if (result.IndexOf(".") == -1) result = result + ".0000000000"; else result = result + "0000000000"; gridView.SetRowCellValue(RowHandle, gridView.Columns[row["fieldName"].ToString()], result.Substring(0, result.IndexOf(".")) + result.Substring(result.IndexOf("."), idataDec + 1)); } else { if (!"NaN".Equals(result) && !"undefined".Equals(result)) { if (string.IsNullOrEmpty(result)) result = "0"; gridView.SetRowCellValue(RowHandle, gridView.Columns[row["fieldName"].ToString()], Math.Round(double.Parse(result), idataDec, MidpointRounding.AwayFromZero)); } } } catch (Exception) { } } public void setUnionValue(GridColumn col, object value) { MyTagModel lookUpTag = col.Tag as MyTagModel; var focusRow = gridView.GetDataRow(gridView.FocusedRowHandle); if (focusRow != null && lookUpTag != null) { string columnName = col.FieldName; string unionFields = lookUpTag.unionFields; string unionValue = lookUpTag.unionValue; unionValue = ReqSqlParam(unionValue, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName); string cellValue = string.IsNullOrEmpty(value + "") ? "" : value.ToString(); unionValue = unionValue.Replace("{" + columnName + "}", cellValue); var fieldParams = GetParamValue(unionValue); for (int i = 0; i < fieldParams.Count; i++) { string fieldName = fieldParams[i].Replace("{", "").Replace("}", ""); string fieldValue = focusRow[fieldName] + ""; unionValue = unionValue.Replace(fieldParams[i], fieldValue); } DataTable dtTable = SqlHelper.ExecuteDataSet(unionValue).Tables[0]; if (dtTable.Rows.Count > 0) { DataRow row = dtTable.Rows[0]; string[] unionFieldSplit = unionFields.Split(','); for (int i = 0; i < unionFieldSplit.Count(); i++) { string fieldName = unionFieldSplit[i]; if (fieldName.Trim() != "") { focusRow[fieldName] = row[fieldName]; //gridView.SetRowCellValue(gridView.FocusedRowHandle, gridView.Columns[fieldName], row[fieldName]); //gridView.UpdateCurrentRow(); } } } else { string[] unionFieldSplit = unionFields.Split(','); for (int i = 0; i < unionFieldSplit.Count(); i++) { string fieldName = unionFieldSplit[i]; if (fieldName.Trim() != "") { focusRow[fieldName] = DBNull.Value; //gridView.SetRowCellValue(gridView.FocusedRowHandle, gridView.Columns[fieldName], null); //gridView.UpdateCurrentRow(); } } } } } private void gridView1_CustomColumnDisplayTextEventHandler(object sender, CustomColumnDisplayTextEventArgs e) { if (e.Column.ColumnEdit is RepositoryItemButtonEdit) { RepositoryItemButtonEdit colEdit = e.Column.ColumnEdit as RepositoryItemButtonEdit; if (colEdit.Tag + "" == "13") { string lValue = e.Value + ""; if (lValue.Trim() != "") { string disp = ""; string[] lst = lValue.Split(','); Dictionary ldic = lookupDatas[e.Column.FieldName]; foreach (string item in lst) { if (ldic.ContainsKey(item)) disp += ldic[item] + ","; else disp += item + ","; } e.DisplayText = disp.TrimEnd(','); } } } } private void gridView1_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e) { GridSummaryItem gi = e.Item as GridSummaryItem; if (e.SummaryProcess == CustomSummaryProcess.Start) { customSum = 0; dicSum.Clear(); } GridColumn gcol = gridView1.Columns[gi.FieldName]; MyTagModel calcTag = gcol.Tag as MyTagModel; string calcStr = ""; if (gcol.Tag != null) { calcStr = (calcTag.calcExpr + "").Trim(); } if (e.SummaryProcess == CustomSummaryProcess.Calculate) { if (calcStr != "") { try { List listParam = GetParamValue(calcStr); foreach (string str in listParam) { string filed = str.Replace("{", "").Replace("}", ""); GridColumn tmpgcol = gridView1.Columns[filed]; string filedValue = gridView1.GetRowCellValue(e.RowHandle, tmpgcol).ToString(); if (string.IsNullOrEmpty(filedValue)) filedValue = "0"; if (dicSum.ContainsKey(filed)) { dicSum[filed] += Math.Round(double.Parse(filedValue), 2, MidpointRounding.AwayFromZero); } else { dicSum.Add(filed, Math.Round(double.Parse(filedValue), 2, MidpointRounding.AwayFromZero)); } } } catch (Exception ex) { //MessageBox.Show("计算公式定义错误:" + calcSource + " >> " + calcExpr + "\n" + ex.Message); } } } if (e.SummaryProcess == CustomSummaryProcess.Finalize) { if (dicSum.Count > 0) try { List listParam = GetParamValue(calcStr); foreach (string str in listParam) { string filed = str.Replace("{", "").Replace("}", ""); string filedValue = dicSum[filed].ToString(); if (string.IsNullOrEmpty(filedValue)) filedValue = "0"; calcStr = calcStr.Replace(str, filedValue + ""); } calcStr = calcStr.Replace("=", "==").Replace("<>", "!=").Replace("and", "&&").Replace("or", "|"); string result = Evaluator.Eval(calcStr).ToString(); int idataDec = 2; customSum += Math.Round(double.Parse(result), idataDec, MidpointRounding.AwayFromZero); } catch (Exception ex) { //MessageBox.Show("计算公式定义错误:" + calcSource + " >> " + calcExpr + "\n" + ex.Message); } e.TotalValue = customSum; } } /// /// sql转换成代码 /// public static string SqlToCode(string str) { string result = str; result = result.Replace("=", "=="); result = result.Replace("<>", "!="); result = result.Replace("and", "&&"); result = result.Replace("or", "||"); result = result.Replace(">==", ">="); result = result.Replace("<==", "<="); return result; } void gridView1_RowCellStyle(object sender, RowCellStyleEventArgs e) { if (!e.Column.OptionsColumn.AllowEdit && UnAllowEditChangeColor) { //System.Drawing.Color color1 = System.Drawing.ColorTranslator.FromHtml("#d0d0d0"); //Color color1 = ColorTranslator.FromHtml("#F0F0F0"); //e.Appearance.BackColor = color1; //e.Appearance.ForeColor = ColorTranslator.FromHtml("#787878"); } if (e.RowHandle >= 0) { DataRow row = this.gridView.GetDataRow(e.RowHandle); if (row == null) return; //颜色集合 DataTable dt = RowColorCondtion as DataTable; if (dt == null) return; //选择列 string cond = string.Empty; string color = string.Empty; string forecolor = string.Empty; if (dt != null && dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { Application.DoEvents(); cond = dr["condition"].ToString(); cond = cond.Replace("{COLUMN_NAME}", e.Column.Name.Replace("col", "")); cond = cond.Replace("{COLUMN_TITLE}", e.Column.Caption); List condition = GetParamValue(cond); foreach (string item in condition) { string filedName = item.Replace("{", "").Replace("}", ""); if (row.Table.Columns.Contains(filedName)) { string dataType = row.Table.Columns[filedName].DataType.ToString(); if (!dataType.Equals("decimal")) cond = cond.Replace(item, row[filedName].ToString()); else cond = cond.Replace(item, string.IsNullOrWhiteSpace(row[filedName].ToString()) ? "0" : row[filedName].ToString()); } else cond = cond.Replace(item, "0"); } cond = SqlToCode(cond); color = dr["backcolor"] + ""; forecolor = dr["forcecolor"].ToString() + ""; string obj = Evaluator.Eval(cond) + ""; if (obj.IndexOf("true", StringComparison.OrdinalIgnoreCase) != -1) { if (!string.IsNullOrEmpty(color)) { System.Drawing.Color color1 = System.Drawing.ColorTranslator.FromHtml(color); e.Appearance.BackColor = color1; } if (!string.IsNullOrEmpty(forecolor)) { System.Drawing.Color foreColor = System.Drawing.ColorTranslator.FromHtml(forecolor); e.Appearance.ForeColor = foreColor; } FontStyle fst = new FontStyle(); if (dr["ifBold"].ToString() == "1") { fst = fst | FontStyle.Bold; } if (dr["ifItalic"].ToString() == "1") { fst = fst | FontStyle.Italic; } if (dr["ifStrickOut"].ToString() == "1") { fst = fst | FontStyle.Strikeout; } if (dr["ifUnderLine"].ToString() == "1") { fst = fst | FontStyle.Underline; } e.Appearance.Font = new Font(e.Appearance.Font, fst); } } } } } private void gridView1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if (sender != null && e != null) { if (e.KeyCode == Keys.Return) { if (gridView1.FocusedColumn.VisibleIndex == gridView1.Columns.Count - 1) { gridView1.FocusedRowHandle = gridView1.FocusedRowHandle + 1; gridView1.FocusedColumn = gridView1.Columns[0]; } else { if (EnterOrder == 1) { gridView.FocusedRowHandle = gridView.FocusedRowHandle + 1; } else { gridView1.FocusedColumn = gridView1.Columns[gridView1.FocusedColumn.VisibleIndex + 1]; } } } if (e.Control & e.KeyCode == Keys.C) { DevExpress.XtraGrid.Views.Base.GridCell[] selecells = gridView.GetSelectedCells(); if (selecells.Length == 1) { object obj = gridView1.GetFocusedRowCellValue(gridView1.FocusedColumn); if (obj != null) { Clipboard.SetDataObject(obj + ""); e.Handled = true; } } else { gridView1.CopyToClipboard(); e.Handled = true; } } if (e.Modifiers.CompareTo(Keys.Control) == 0 && e.KeyCode == Keys.V) { isCancel = true; //e.Handled = true; object _objData = null; IDataObject dataObj = Clipboard.GetDataObject(); if (dataObj.GetDataPresent(DataFormats.Text)) _objData = dataObj.GetData(DataFormats.Text); if (_objData != null) { string _tempStr = _objData.ToString(); int _rowNumber = 1; int _pasteRowCount = 1; string[] _split = { "\r\n" }; string[] _arrayRowStr = _tempStr.Split(_split, StringSplitOptions.None); if (_arrayRowStr.Length < 1) return; DevExpress.XtraGrid.Views.Base.GridCell[] selecells = gridView.GetSelectedCells(); if (selecells != null && selecells.Length > 0) { _rowNumber = selecells[0].RowHandle; if (_arrayRowStr.Length != gridView.SelectedRowsCount) { //选择区域与粘贴行数不匹配 } _pasteRowCount = _arrayRowStr.Length; for (int i = 0; i < _pasteRowCount; i++) { string[] _arrayStr2 = _arrayRowStr[i].Split('\t'); if ((i == _pasteRowCount - 1) && (_arrayRowStr[_pasteRowCount - 1].Replace("\r\n", "").Trim() == "")) continue; if (_arrayStr2.Length == 0) _arrayStr2[0] = _arrayRowStr[i]; //MessageBox.Show(_arrayStr2[0]); int _colNumber = selecells[0].Column.AbsoluteIndex; for (int j = 0; j < _arrayStr2.Length; j++) { //MessageBox.Show(_arrayStr2[j]); if ((gridView.OptionsBehavior.Editable == true) && (gridView.Columns[_colNumber].OptionsColumn.AllowEdit)) gridView.SetRowCellValue(_rowNumber, gridView.Columns[_colNumber], _arrayStr2[j]); _colNumber += 1; } _rowNumber += 1; } if (ModuleType == 1) SendKeys.Send("{esc}"); //e.Handled = true; } } } if (e.Control & e.Shift & e.KeyCode == Keys.C) { if ((gridView.OptionsBehavior.Editable == true) && (AddCopyRows == true)) { DataTable dt = gridView.GridControl.DataSource as DataTable; clipTable.Rows.Clear(); clipTable = dt.Clone(); foreach (int hnd in gridView.GetSelectedRows()) { object[] obj = gridView.GetDataRow(hnd).ItemArray; clipTable.LoadDataRow(obj, true); } if (clipTable.Rows.Count > 0) { DialogResult dlg = MessageBox.Show("是否复制新增选中的行", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question); //DataTable dt = gridView.GridControl.DataSource as DataTable; foreach (DataRow dr in clipTable.Rows) { DataRow drnew = dt.NewRow(); object[] obj = dr.ItemArray; //drnew.ItemArray = obj; for (int i = 0; i < clipTable.Columns.Count; i++) { if (!clipTable.Columns[i].ColumnName.ToLower().Equals(ColumnPrefix + "id", StringComparison.OrdinalIgnoreCase)) drnew[i] = dr[i]; } dt.Rows.Add(drnew); //dt.LoadDataRow(obj, true); } } } e.Handled = true; } if ((e.KeyCode == Keys.F6) || (e.KeyCode == Keys.F7)) { GridColumn gc = gridView.FocusedColumn; if ((gc != null) && (gridView.RowCount > 0) && (gc.OptionsColumn.AllowEdit == true) && (gridView.OptionsBehavior.Editable == true)) { DevExpress.XtraGrid.Views.Base.GridCell[] selecells = gridView.GetSelectedCells(); if (selecells.Length == 1) { if (gridView.FocusedRowHandle < gridView.RowCount) { DialogResult dlr = MessageBox.Show("是否替换本列下所有数据为当前单元格数据?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dlr == DialogResult.Yes) { object obj = gridView.GetFocusedRowCellValue(gc); if (obj != null) { int focusedRowHandle = gridView.FocusedRowHandle; for (int i = focusedRowHandle; i < gridView.RowCount; i++) { gridView.FocusedRowHandle = i; object obj1 = gridView.GetRowCellValue(i, gc); if (e.KeyCode == Keys.F6) { if ((obj1 == null) || (obj1.ToString() == "0") || (obj1.ToString() == "")) gridView.SetRowCellValue(i, gc, obj); } else gridView.SetRowCellValue(i, gc, obj); gridView.PostEditor(); } e.Handled = true; } } } } else { e.Handled = true; } } } if ((e.KeyCode == Keys.F8)) { GridColumn gc = gridView.FocusedColumn; if ((gc != null) && (gridView.RowCount > 0) && (gc.OptionsColumn.AllowEdit == true) && (gridView.OptionsBehavior.Editable == true)) { DevExpress.XtraGrid.Views.Base.GridCell[] selecells = gridView.GetSelectedCells(); if (selecells.Length == 1) { if (gridView.FocusedRowHandle < gridView.RowCount) { DialogResult dlr = MessageBox.Show("是否按顺序生成本列数据?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dlr == DialogResult.Yes) { object obj = gridView.GetFocusedRowCellValue(gc); long lint = 0; int ilen = 0; if ((obj != null) && (Int64.TryParse(obj + "", out lint))) { ilen = obj.ToString().Length; int focusedRowHandle = gridView.FocusedRowHandle; for (int i = focusedRowHandle; i <= gridView.RowCount; i++) { gridView.FocusedRowHandle = i; string istr = lint.ToString().PadLeft(ilen, '0'); gridView.SetRowCellValue(i, gc, istr); gridView.PostEditor(); lint++; } e.Handled = true; } } } } else { e.Handled = true; } } } } } private DefaultBoolean GetMergeFlag(DataRow row) { if (!row.Table.Columns.Contains("ifMerge")) return DefaultBoolean.False; return (row["ifMerge"] + "" == "1") ? DefaultBoolean.True : DefaultBoolean.False; } public void SetColumns(string sql) { _currentSetColumnType = 1; gridView.Columns.Clear(); try { DataTable dt = SqlHelper.ExecuteDataSet(sql).Tables[0]; ColumnSQL = sql; dtColumns = dt; if (OperatorName != "管理员") { dt = ResetColumns(dt); } isSetColumnWidth = dt.Rows.Count == 0; for (int i = 0; i < dt.Rows.Count; i++) { DataRow row = dt.Rows[i]; GridColumn gridColumn = new GridColumn(); gridColumn.OptionsColumn.AllowMerge = GetMergeFlag(row); if (gridColumn.OptionsColumn.AllowMerge == DefaultBoolean.True) gridView.OptionsView.AllowCellMerge = true; gridColumn.FieldName = row["fieldname"].ToString(); gridColumn.Name = row["fieldname"].ToString(); gridColumn.VisibleIndex = i; gridColumn.Caption = row["userName"].ToString(); gridColumn.Width = Convert.ToInt32(row["width"]); gridColumn.Visible = ((Convert.ToInt32(row["width"]) > 0)); gridColumn.OptionsFilter.FilterPopupMode = FilterPopupMode.CheckedList; gridColumn.OptionsColumn.AllowEdit = false; gridColumn.OptionsColumn.ReadOnly = false; string dataFormat = row["DataFormat"] + ""; CommonUtils.DataFormat(gridColumn, row["DataFormat"] + "", 7); // 单据来源明细没有定义列类型,默认按照数字方式格式化 DataColumn dc = dt.Columns["Accuracy"]; if (dc != null) { string Accuracy = dt.Rows[i]["Accuracy"] + ""; if (!string.IsNullOrEmpty(Accuracy) && Accuracy != "0") { gridColumn.DisplayFormat.FormatType = FormatType.Numeric; gridColumn.DisplayFormat.FormatString = "F2"; } } DataColumn dcIsSum = dt.Columns["isSum"]; if (dcIsSum != null) { if (!String.IsNullOrEmpty(row["isSum"] + "")) { int isSum = Convert.ToInt32(row["isSum"]); //处理统计 if (isSum == 1) { string defaultFormat = "{0:" + dataFormat + "}"; if (dt.Columns.Contains("sumText") && !string.IsNullOrWhiteSpace(dt.Rows[i]["sumText"] + "")) defaultFormat = dt.Rows[i]["sumText"] + ""; gridView.OptionsView.ShowFooter = true; gridColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), defaultFormat) }); gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), null, defaultFormat) }); } } } gridView1.Columns.Add(gridColumn); } if (gridView.Columns.Count > 0) { GridColumn firstColumn = gridView.Columns[0]; if (firstColumn != null) { gridView.OptionsView.ShowFooter = true; firstColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Count, firstColumn.FieldName.ToString(), "合计: {0:#,###}行") }); gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Count, firstColumn.FieldName.ToString(), null, "合计: {0:#,###}行") }); } } } catch (Exception) { isSetColumnWidth = true; } } /// /// 基础数据 /// /// public void SetColumns2(DataTable dt) { _currentSetColumnType = 2; dtColumns = dt; dt = ResetColumns(dt); gridView.Columns.Clear(); for (int i = 0; i < dt.Rows.Count; i++) { DataRow row = dt.Rows[i]; GridColumn gridColumn = new GridColumn(); gridColumn.OptionsColumn.AllowMerge = GetMergeFlag(row); if (gridColumn.OptionsColumn.AllowMerge == DefaultBoolean.True) gridView.OptionsView.AllowCellMerge = true; gridColumn.FieldName = row["fieldname"].ToString(); gridColumn.Name = row["fieldname"].ToString(); gridColumn.VisibleIndex = i; gridColumn.Caption = row["username1"].ToString(); gridColumn.Width = Convert.ToInt32(row["width"]); gridColumn.OptionsFilter.FilterPopupMode = FilterPopupMode.CheckedList; int sqltag = Convert.ToInt32(row["fieldsqlTag"]); if (UnAllowEditChangeColor) { if (Convert.ToInt32(row["edit"]) == 1) { gridColumn.AppearanceHeader.Options.UseForeColor = true; gridColumn.AppearanceHeader.ForeColor = ColorTranslator.FromHtml(headerColor); } } if (sqltag == 8) { CreatePassword(gridColumn); } //备注框自动换行 if (sqltag == 9) { GetMemoEdit(gridColumn, gridControl); } if (sqltag == 10) { gridColumn.Tag = "www"; } if (sqltag == 11) { gridColumn.Tag = "qq"; } if (sqltag == 20) { GetMemoExEdit(gridColumn, gridControl); } if (sqltag == 37) { InitRichEdit(gridColumn); } gridColumn.Visible = ((Convert.ToInt32(row["width"]) > 0)); if (i == 0) { gridColumn.OptionsColumn.AllowShowHide = false; } string unionFields = row["unionFields"] + ""; string unionValue = row["unionValue"] + ""; //gridColumn.OptionsColumn.ReadOnly = false; gridColumn.OptionsColumn.AllowEdit = Convert.ToInt32(row["edit"]) != 1; gridView.Columns.Add(gridColumn); int fieldsqlTag = Convert.ToInt32(row["fieldsqlTag"]); gridColumn.Tag = new MyTagModel() { DefaultValue = row["defaultdate"].ToString(), Tag = gridColumn.Tag, calcExpr = row["calcExpr"].ToString(), unionFields = unionFields, unionValue = unionValue, lookupSql = row["fieldsql"] + "", lookupKey = row["fieldsqlid"] + "", lookupValue = row["fieldsqlname"] + "", fieldTypeId = fieldsqlTag }; //if (fieldsqlTag == 1 || fieldsqlTag == 5) { // GetLookUpEdit(row["fieldsql"].ToString(), row["fieldsqlid"].ToString(), row["fieldsqlname"] + "", row["fieldname"] + "", gridColumn, fieldsqlTag, row["fieldsqlid"].ToString(), row["fieldsqlname"] + "", unionFields, unionValue); //} //if (fieldsqlTag == 2 || fieldsqlTag == 6) { // GetLookUpEdit(row["fieldsql"].ToString(), row["fieldsqlname"].ToString(), row["fieldsqlid"] + "", row["fieldname"] + "", gridColumn, fieldsqlTag, row["fieldsqlid"].ToString(), row["fieldsqlname"] + "", unionFields, unionValue); //} int fieldTypeId = Convert.ToInt32(row["fieldsqlTag"]); string lookupSql = row["fieldsql"] + ""; string lookupKeyField = row["fieldsqlid"] + ""; string lookupResult = row["fieldsqlname"] + ""; string fieldName = row["fieldName"] + ""; if ((fieldsqlTag == 1) || (fieldsqlTag == 3)) { GetLookUpEdit(lookupSql, lookupKeyField, lookupResult, fieldName, gridColumn, fieldTypeId, gridControl); } if ((fieldsqlTag == 2) || (fieldsqlTag == 23)) { GetComboBox(lookupSql, lookupKeyField, lookupResult, fieldName, gridColumn, fieldTypeId); } if ((fieldsqlTag == 5) || (fieldsqlTag == 15)) { GetLookUpEdit(row["fieldsql"].ToString(), row["fieldsqlid"].ToString(), row["fieldsqlname"] + "", row["fieldname"] + "", gridColumn, fieldsqlTag, row["fieldsqlid"].ToString(), row["fieldsqlname"] + "", unionFields, unionValue); } if ((fieldsqlTag == 6) || (fieldsqlTag == 16)) { GetLookUpEdit(row["fieldsql"].ToString(), row["fieldsqlname"].ToString(), row["fieldsqlid"] + "", row["fieldname"] + "", gridColumn, fieldsqlTag, row["fieldsqlid"].ToString(), row["fieldsqlname"] + "", unionFields, unionValue); } if (fieldsqlTag == 96) { GetProgressBar(gridColumn); } if (fieldsqlTag == 17) { GetCheckColumn(gridColumn); } if (fieldsqlTag == 99) { InitPicEdit(gridColumn); } if (fieldsqlTag == 18 || fieldsqlTag == 19) { GetCheckComboColumn(row["fieldsql"].ToString(), row["fieldsqlid"] + "", row["fieldsqlname"].ToString(), row["fieldname"] + "", gridColumn, fieldsqlTag, row["fieldsqlid"].ToString(), row["fieldsqlname"] + "", unionFields, unionValue); } if (fieldsqlTag == 10) { GetHyperLink(gridColumn); } // 日期时间控件 if (fieldsqlTag == 4 || fieldsqlTag == 44 || fieldsqlTag == 444) { CreateDateTime(gridColumn, fieldsqlTag); } if (fieldsqlTag == ControlType.LabCalcText) { CreateCalc(gridColumn); } if (fieldsqlTag == 4444 || fieldsqlTag == 44444) { CreateTime(gridColumn, fieldsqlTag); } if (fieldsqlTag == 13 || fieldsqlTag == 14 || fieldsqlTag == 34) { CreateButtonEdit(gridColumn, row); } if (fieldTypeId == 33) { InitMutilEdit(gridColumn, row["fieldsql"].ToString(), lookupKeyField, lookupResult, fieldTypeId); } string dataFormat = row["DataFormat"] + ""; CommonUtils.DataFormat(gridColumn, dataFormat, fieldsqlTag); DataColumn dc = dt.Columns["Accuracy"]; if (dc != null) { string Accuracy = dt.Rows[i]["Accuracy"] + ""; if (!string.IsNullOrEmpty(Accuracy) && Accuracy != "0") { gridColumn.DisplayFormat.FormatType = FormatType.Numeric; gridColumn.DisplayFormat.FormatString = "F2"; } } DataColumn dcIsSum = dt.Columns["isSum"]; if (dcIsSum != null) { if (!String.IsNullOrEmpty(row["isSum"] + "")) { int isSum = Convert.ToInt32(row["isSum"]); //处理统计 if (isSum == 1) { gridView.OptionsView.ShowFooter = true; //if ((row["calcExpr"] + "").IndexOf("/{")==-1) //{ string defaultFormat = "{0:" + dataFormat + "}"; if (dt.Columns.Contains("sumText") && !string.IsNullOrWhiteSpace(dt.Rows[i]["sumText"] + "")) defaultFormat = dt.Rows[i]["sumText"] + ""; gridColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), defaultFormat) }); gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), null, defaultFormat) }); //} //else //{ // gridColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Custom, row["fieldname"].ToString(), "{0:" + dataFormat + "}") }); // gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Custom, row["fieldname"].ToString(), null, "{0:" + dataFormat + "}") }); //} } } } } if (gridView.Columns.Count > 0) { GridColumn firstColumn = gridView.Columns[0]; if (firstColumn != null) { gridView.OptionsView.ShowFooter = true; firstColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Count, firstColumn.FieldName.ToString(), "合计: {0:#,###}行") }); gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Count, firstColumn.FieldName.ToString(), null, "合计: {0:#,###}行") }); } } } private void InitMutilEdit(GridColumn gridColumn,string sql,string key,string value,int tagID) { FrmMain frmMain = new FrmMain(); String SQL = sql; SQL = GetDefaultValue(SQL, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName); Dictionary Columns = new Dictionary(); Columns.Add(key, "编码"); Columns.Add(value, "名称"); if (SQL.IndexOf("Remark", StringComparison.OrdinalIgnoreCase) != -1) Columns.Add("Remark", "备注"); frmMain.IsMultiple = true; frmMain.Columns = Columns; int fieldsqlTag = tagID; frmMain.ValueField = key; frmMain.TextField = value; frmMain.IsText = fieldsqlTag; frmMain.sourceSQL = SQL; frmMain.SQL = SQL; string tmpsql = SQL; tmpsql = Regex.Replace(SQL, "#[^##]+#", " 1=1 "); DataTable dtb = SqlHelper.ExecuteDataSet(tmpsql).Tables[0]; //Dictionary lookupDt = new Dictionary(); //foreach (DataRow item in dtb.Rows) //{ // //由于数据问题相同键值 // if (lookupDt.ContainsKey(item[frmMain.ValueField] + "")) continue; // lookupDt.Add(item[frmMain.ValueField] + "", item[frmMain.TextField] + ""); //} //lookupDatas.Add(gridColumn.FieldName, lookupDt); RepositoryItemCheckedComboBoxEdit btnEdit = new RepositoryItemCheckedComboBoxEdit(); btnEdit.NullText = ""; btnEdit.PopupBorderStyle = PopupBorderStyles.Flat; btnEdit.AllowNullInput = DefaultBoolean.False; btnEdit.DisplayMember = frmMain.TextField; btnEdit.AutoHeight = false; btnEdit.SeparatorChar = ','; btnEdit.ValueMember = fieldsqlTag == ControlType.LabMultiSelectValue || fieldsqlTag == ControlType.LabMultiSelectValueParam ? frmMain.ValueField : frmMain.TextField; btnEdit.DataSource = SqlHelper.ExecuteDataTable(tmpsql); btnEdit.Buttons[0].Visible = false; btnEdit.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Ellipsis) }); btnEdit.Name = "btnEdit"; btnEdit.Tag = fieldsqlTag; btnEdit.Buttons[1].Tag = frmMain; //btnEdit.Tag = SQL; btnEdit.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(this.OnButtonEditClick); gridControl.RepositoryItems.Add(btnEdit); gridColumn.OptionsColumn.ReadOnly = true; gridColumn.ColumnEdit = btnEdit; } public DataTable SetColumns3(string sql) { _currentSetColumnType = 3; gridView.Columns.Clear(); DataTable dt = SqlHelper.ExecuteDataSet(sql).Tables[0]; ColumnSQL = sql; dtColumns = dt; dt = ResetColumns(dt); for (int i = 0; i < dt.Rows.Count; i++) { DataRow row = dt.Rows[i]; GridColumn gridColumn = new GridColumn(); gridColumn.OptionsColumn.AllowMerge = GetMergeFlag(row); if (gridColumn.OptionsColumn.AllowMerge == DefaultBoolean.True) gridView.OptionsView.AllowCellMerge = true; gridColumn.FieldName = row["fieldname"].ToString(); gridColumn.Name = row["fieldname"].ToString(); gridColumn.VisibleIndex = i; gridColumn.Caption = row["userName"].ToString(); gridColumn.Width = Convert.ToInt32(row["width"]); gridColumn.OptionsFilter.FilterPopupMode = FilterPopupMode.CheckedList; gridColumn.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; gridColumn.Visible = ((Convert.ToInt32(row["width"]) > 0)); string dataFormat = row["DataFormat"] + ""; object obj = dt.Columns["isedited"]; if (obj != null && Convert.ToInt32(row["isedited"] + "" == "" ? "0" : row["isedited"]) == 1) { gridColumn.OptionsColumn.AllowEdit = false; gridColumn.OptionsColumn.ReadOnly = true; if (UnAllowEditChangeColor) { gridColumn.AppearanceHeader.Options.UseForeColor = true; gridColumn.AppearanceHeader.ForeColor = ColorTranslator.FromHtml(headerColor); } } if (dt.Columns.Contains("isSum")) { int isSum = string.IsNullOrEmpty(row["isSum"] + "") ? 0 : Convert.ToInt32(row["isSum"]); //处理统计 if (isSum == 1) { string defaultFormat = "{0:" + dataFormat + "}"; if (dt.Columns.Contains("sumText") && !string.IsNullOrWhiteSpace(dt.Rows[i]["sumText"] + "")) defaultFormat = dt.Rows[i]["sumText"] + ""; gridView.OptionsView.ShowFooter = true; //gridColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), "{0}") }); //gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), null, "") }); //if ((row["calcExpr"] + "").IndexOf("/{") == -1) //{ gridColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), defaultFormat) }); gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), null, defaultFormat) }); //} //else //{ // gridColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Custom, row["fieldname"].ToString(), "{0:" + dataFormat + "}") }); // gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Custom, row["fieldname"].ToString(), null, "{0:" + dataFormat + "}") }); //} } } gridView.Columns.Add(gridColumn); int fieldTypeId = Convert.ToInt32(row["fieldTypeId"]); string lookupSql = row["lookupSql"] + ""; string lookupKeyField = row["lookupKeyField"] + ""; string lookupResult = row["lookupResult"] + ""; string fieldName = row["fieldName"] + ""; string unionFields = row["unionFields"] + ""; string unionValue = row["unionValue"] + ""; //if (fieldTypeId == 1 || fieldTypeId == 5 || fieldTypeId == 15) //{ // GetLookUpEdit(lookupSql, lookupKeyField, lookupResult, fieldName, gridColumn, fieldTypeId, lookupKeyField, lookupResult, unionFields, unionValue); //} //if (fieldTypeId == 2 || fieldTypeId == 6 || fieldTypeId == 16) //{ // GetLookUpEdit(lookupSql, lookupResult, lookupKeyField, fieldName, gridColumn, fieldTypeId, lookupKeyField, lookupResult, unionFields, unionValue); //} if (fieldTypeId == 1) { GetLookUpEdit(lookupSql, lookupKeyField, lookupResult, fieldName, gridColumn, fieldTypeId, gridControl); } if ((fieldTypeId == 2) || (fieldTypeId == 23)) { GetComboBox(lookupSql, lookupKeyField, lookupResult, fieldName, gridColumn, fieldTypeId); } if (fieldTypeId == 5 || fieldTypeId == 15) { GetLookUpEdit(lookupSql, lookupKeyField, lookupResult, fieldName, gridColumn, fieldTypeId, lookupKeyField, lookupResult, unionFields, unionValue); } if (fieldTypeId == 6 || fieldTypeId == 16) { GetLookUpEdit(lookupSql, lookupResult, lookupKeyField, fieldName, gridColumn, fieldTypeId, lookupKeyField, lookupResult, unionFields, unionValue); } if (fieldTypeId == 96) { GetProgressBar(gridColumn); } if (fieldTypeId == 17) { GetCheckColumn(gridColumn); } if (fieldTypeId == 18 || fieldTypeId == 19) { GetCheckComboColumn(lookupSql, lookupKeyField, lookupResult, fieldName, gridColumn, fieldTypeId, lookupKeyField, lookupResult, unionFields, unionValue); } // 日期时间控件 if (fieldTypeId == 4 || fieldTypeId == 44 || fieldTypeId == 444) { CreateDateTime(gridColumn, fieldTypeId); } if (fieldTypeId == ControlType.LabCalcText) { CreateCalc(gridColumn); } if (fieldTypeId == 4444 || fieldTypeId == 44444) { CreateTime(gridColumn, fieldTypeId); } if (fieldTypeId == 13 || fieldTypeId == 14) { CreateButtonEdit2(gridColumn, row); } if (fieldTypeId == 33) { InitMutilEdit(gridColumn, row); } //QQ和网址 if (fieldTypeId == 10) { GetHyperLink(gridColumn); gridColumn.Tag = "www"; } if (fieldTypeId == 11) { gridColumn.Tag = "qq"; } //if (fieldTypeId == ControlType.LabMultiSelectValue) //{ // GetLookUpEdit(lookupSql, lookupKeyField, lookupResult, fieldName, gridColumn, fieldTypeId, gridControl); //} if (fieldTypeId == 37) { InitRichEdit(gridColumn); } //备注框自动换行 if (fieldTypeId == 9) { GetMemoEdit(gridColumn, gridControl); } if (fieldTypeId == 20) { GetMemoExEdit(gridColumn, gridControl); } if (fieldTypeId == 99) { InitPicEdit(gridColumn); } gridColumn.Tag = new MyTagModel() { DefaultValue = row["DefaultValue"].ToString(), Tag = gridColumn.Tag, calcExpr = row["calcExpr"].ToString(), unionFields = unionFields, unionValue = unionValue, lookupSql = lookupSql, lookupKey = lookupKeyField, lookupValue = lookupResult, fieldTypeId = fieldTypeId }; CommonUtils.DataFormat(gridColumn, row["DataFormat"] + "", fieldTypeId); } if (gridView.Columns.Count > 0) { GridColumn firstColumn = gridView.Columns[0]; if (firstColumn != null) { gridView.OptionsView.ShowFooter = true; firstColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Count, firstColumn.FieldName.ToString(), "合计: {0:#,###}行") }); gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Count, firstColumn.FieldName.ToString(), null, "合计: {0:#,###}行") }); } } return dt; } /// /// 说明:表格图片控件 /// 创建人:姜棚 /// 创建日期:2018-08-02 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void InitPicEdit(GridColumn gridColumn) { RepositoryItemPictureEdit picEdit = new RepositoryItemPictureEdit(); picEdit.AutoHeight = true; picEdit.BestFitWidth = 16; picEdit.CustomHeight = 16; gridColumn.ColumnEdit = picEdit; } private void InitMutilEdit(GridColumn gridColumn, DataRow row) { FrmMain frmMain = new FrmMain(); String SQL = row["lookupSql"].ToString(); SQL = GetDefaultValue(SQL, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName); Dictionary Columns = new Dictionary(); Columns.Add(row["lookupKeyField"].ToString(), "编码"); Columns.Add(row["lookupResult"].ToString(), "名称"); if (SQL.IndexOf("Remark", StringComparison.OrdinalIgnoreCase) != -1) Columns.Add("Remark", "备注"); frmMain.IsMultiple = true; frmMain.Columns = Columns; int fieldsqlTag = Convert.ToInt32(row["fieldTypeId"]); frmMain.ValueField = row["lookupKeyField"] + ""; frmMain.TextField = row["lookupResult"] + ""; frmMain.IsText = fieldsqlTag; frmMain.sourceSQL = SQL; frmMain.SQL = SQL; string tmpsql = SQL; tmpsql = Regex.Replace(SQL, "#[^##]+#", " 1=1 "); DataTable dtb = SqlHelper.ExecuteDataSet(tmpsql).Tables[0]; //Dictionary lookupDt = new Dictionary(); //foreach (DataRow item in dtb.Rows) //{ // //由于数据问题相同键值 // if (lookupDt.ContainsKey(item[frmMain.ValueField] + "")) continue; // lookupDt.Add(item[frmMain.ValueField] + "", item[frmMain.TextField] + ""); //} //lookupDatas.Add(gridColumn.FieldName, lookupDt); RepositoryItemCheckedComboBoxEdit btnEdit = new RepositoryItemCheckedComboBoxEdit(); btnEdit.NullText = ""; btnEdit.PopupBorderStyle = PopupBorderStyles.Flat; btnEdit.AllowNullInput = DefaultBoolean.False; btnEdit.DisplayMember = frmMain.TextField; btnEdit.AutoHeight = false; btnEdit.SeparatorChar = ','; btnEdit.ValueMember = fieldsqlTag == ControlType.LabMultiSelectValue || fieldsqlTag == ControlType.LabMultiSelectValueParam ? frmMain.ValueField : frmMain.TextField; btnEdit.DataSource = SqlHelper.ExecuteDataTable(tmpsql); btnEdit.Buttons[0].Visible = false; btnEdit.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Ellipsis) }); btnEdit.Name = "btnEdit"; btnEdit.Tag = fieldsqlTag; btnEdit.Buttons[1].Tag = frmMain; //btnEdit.Tag = SQL; btnEdit.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(this.OnButtonEditClick); gridControl.RepositoryItems.Add(btnEdit); gridColumn.OptionsColumn.ReadOnly = true; gridColumn.ColumnEdit = btnEdit; } protected void OnButtonEditClick(object sender, ButtonPressedEventArgs e) { CheckedComboBoxEdit btnEdit = (CheckedComboBoxEdit)sender; FrmMain frmMain = e.Button.Tag as FrmMain; if (frmMain.IsText == ControlType.LabMultiSelectValue || frmMain.IsText == ControlType.LabMultiSelectValueParam) frmMain.ReturnValue = btnEdit.EditValue + ""; else frmMain.ReturnText = btnEdit.Text; var focusRow = gridView.GetDataRow(gridView.FocusedRowHandle); if (focusRow != null) { string tmpsql = frmMain.sourceSQL + ""; tmpsql = tmpsql.Replace("#", "").Replace("#", ""); var fieldParams = GetParamValue(tmpsql); //从单据头取值 if (pnlMain != null) { for (int i = 0; i < fieldParams.Count; i++) { string fieldName = fieldParams[i].Replace("{", "").Replace("}", ""); Control[] ctl = pnlMain.Controls.Find("txt_" + fieldName, true); if ((ctl != null) && (ctl.Length > 0)) { string fieldValue = GetControlText(ctl[0]); tmpsql = tmpsql.Replace(fieldParams[i], fieldValue); } } } //从选中行取值 fieldParams = GetParamValue(tmpsql); for (int i = 0; i < fieldParams.Count; i++) { string fieldName = fieldParams[i].Replace("{", "").Replace("}", ""); string fieldValue = focusRow[fieldName] + ""; tmpsql = tmpsql.Replace(fieldParams[i], fieldValue); } frmMain.SQL = tmpsql; } DialogResult dr = frmMain.ShowDialog(); if (dr == DialogResult.OK) { btnEdit.EditValue = frmMain.ReturnValue; } } /// /// 初始化富文本控件 /// private void InitRichEdit(GridColumn gridColumn) { gridColumn.AppearanceCell.Options.UseFont = true; gridColumn.AppearanceCell.Font = new Font("宋体", 15f); RepositoryItemRichTextEdit richEdit = new RepositoryItemRichTextEdit(); richEdit.Appearance.Font = new Font("宋体", 15f); gridControl.RepositoryItems.Add(richEdit); gridColumn.ColumnEdit = richEdit; } private void CreateButtonEdit2(GridColumn gridColumn, DataRow row) { FrmMain frmMain = new FrmMain(); String SQL = row["lookupSql"].ToString(); SQL = GetDefaultValue(SQL, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName); Dictionary Columns = new Dictionary(); Columns.Add(row["lookupKeyField"].ToString(), "编码"); Columns.Add(row["lookupResult"].ToString(), "名称"); if (SQL.IndexOf("Remark", StringComparison.OrdinalIgnoreCase) != -1) Columns.Add("Remark", "备注"); frmMain.IsMultiple = true; frmMain.Columns = Columns; int fieldsqlTag = Convert.ToInt32(row["fieldTypeId"]); frmMain.ValueField = row["lookupKeyField"] + ""; frmMain.TextField = row["lookupResult"] + ""; frmMain.IsText = fieldsqlTag; frmMain.sourceSQL = SQL; frmMain.SQL = SQL; string tmpsql = SQL; tmpsql = Regex.Replace(SQL, "#[^##]+#", " 1=1 "); DataTable dtb = SqlHelper.ExecuteDataSet(tmpsql).Tables[0]; Dictionary lookupDt = new Dictionary(); foreach (DataRow item in dtb.Rows) { //由于数据问题相同键值 if (lookupDt.ContainsKey(item[frmMain.ValueField] + "")) continue; lookupDt.Add(item[frmMain.ValueField] + "", item[frmMain.TextField] + ""); } lookupDatas.Add(gridColumn.FieldName, lookupDt); RepositoryItemButtonEdit btnEdit = new RepositoryItemButtonEdit(); btnEdit.AutoHeight = false; btnEdit.Buttons[0].Tag = frmMain; btnEdit.Name = "btnEdit"; btnEdit.Tag = fieldsqlTag; //btnEdit.Tag = SQL; btnEdit.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(this.btnEdit_ButtonClick); gridControl.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { btnEdit }); gridColumn.OptionsColumn.ReadOnly = true; gridColumn.ColumnEdit = btnEdit; } private void CreateDateTime(GridColumn gridColumn, int fieldsqlTag) { RepositoryItemDateEdit dateEdit = new RepositoryItemDateEdit(); dateEdit.DisplayFormat.FormatString = dateEdit.EditFormat.FormatString = dateEdit.Mask.EditMask = DateFormatType.GetFormatValue(fieldsqlTag); dateEdit.DisplayFormat.FormatType = dateEdit.EditFormat.FormatType = DevExpress.Utils.FormatType.Custom; dateEdit.Closed += new ClosedEventHandler(dateEdit_Closed); gridControl.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { dateEdit }); gridColumn.ColumnEdit = dateEdit; } private void CreateTime(GridColumn gridColumn, int fieldsqlTag) { RepositoryItemTimeEdit timeEdit = new RepositoryItemTimeEdit(); timeEdit.DisplayFormat.FormatString = timeEdit.EditFormat.FormatString = timeEdit.Mask.EditMask = DateFormatType.GetFormatValue(fieldsqlTag); timeEdit.DisplayFormat.FormatType = timeEdit.EditFormat.FormatType = DevExpress.Utils.FormatType.Custom; gridControl.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { timeEdit }); gridColumn.ColumnEdit = timeEdit; } /// /// 计算器 /// /// private void CreateCalc(GridColumn gridColumn) { RepositoryItemCalcEdit calcEdit = new RepositoryItemCalcEdit(); calcEdit.AllowMouseWheel = false; gridColumn.ColumnEdit = calcEdit; } private void CreatePassword(GridColumn gridColumn) { RepositoryItemTextEdit passEdit = new RepositoryItemTextEdit(); passEdit.UseSystemPasswordChar = true; passEdit.PasswordChar = '*'; gridColumn.ColumnEdit = passEdit; } private void dateEdit_Closed(object sender, ClosedEventArgs e) { if (sender is DateEdit) { DateEdit dateEdit = (sender as DateEdit); string dateFormatType = dateEdit.Properties.DisplayFormat.FormatString; if (!string.IsNullOrEmpty(dateEdit.SelectedText)) { dateEdit.EditValue = dateEdit.DateTime.ToString(dateFormatType); } } } #region 智能搜索框事件处理 /// /// 取指定组件值 /// /// /// public static string GetControlText(Control control) { if (control == null) return ""; if (control.Tag == null) { return control.Text; } ControlModelTag cmTag = control.Tag as ControlModelTag; if (cmTag.fieldTypeId == ControlType.LabAutoSeacherText) { return control.Text; } else if ((cmTag.fieldTypeId == ControlType.LabAutoSeacherValue) || (cmTag.fieldTypeId == ControlType.LabComboxValueParam)) { AutoSearcher te = control as AutoSearcher; return te.ReturnValue.ToString(); } else if (cmTag.fieldTypeId == ControlType.LabMultiSelectValue) { LabelLookUp lookup = control as LabelLookUp; return lookup.ReturnValue; } else if (cmTag.fieldTypeId == ControlType.LabComboxValue) { LabelComboxEx Cb = control as LabelComboxEx; return Cb.getComboBox.SelectedValue + ""; } else if (cmTag.fieldTypeId == ControlType.LabComboxText) { LabelComboxEx Cb = control as LabelComboxEx; return Cb.getComboBox.Text; } else if (cmTag.fieldTypeId == ControlType.LabDate || cmTag.fieldTypeId == ControlType.LabDateTime || cmTag.fieldTypeId == ControlType.LabDateTimeShort || cmTag.fieldTypeId == ControlType.LabTime || cmTag.fieldTypeId == ControlType.LabShortTime) { LabelDateEx Cb = control as LabelDateEx; return Cb.GetDateTimePicker.Value.ToString("yyyy-MM-dd HH:mm:ss"); } else if (cmTag.fieldTypeId == ControlType.LabTextInt) { if ((control.Text.Trim() == "")) return "0"; else return control.Text; } else { if (cmTag.fieldTypeId != 99) { return control.Text; } } return "0"; } /// /// 动态加载数据源 /// /// /// private void lookUp_QueryPopUp(object sender, CancelEventArgs e) { if (sender is SearchLookUpEdit) { var focusRow = gridView.GetDataRow(gridView.FocusedRowHandle); if (true) { SearchLookUpEdit edit = (sender as SearchLookUpEdit); LookUpTag lookUpTag = edit.Properties.Tag as LookUpTag; if (lookUpTag != null && !string.IsNullOrEmpty(lookUpTag.Sql)) { string sqlValue = lookUpTag.Sql.Replace("#", "").Replace("#", ""); var fieldParams = GetParamValue(sqlValue); //从单据头取值 if (pnlMain != null) { for (int i = 0; i < fieldParams.Count; i++) { string fieldName = fieldParams[i].Replace("{", "").Replace("}", ""); Control[] ctl = pnlMain.Controls.Find("txt_" + fieldName, true); if ((ctl != null) && (ctl.Length > 0)) { string fieldValue = GetControlText(ctl[0]); sqlValue = sqlValue.Replace(fieldParams[i], fieldValue); } } } //从选中行取值 if (focusRow != null) { fieldParams = GetParamValue(sqlValue); for (int i = 0; i < fieldParams.Count; i++) { string fieldName = fieldParams[i].Replace("{", "").Replace("}", ""); fieldName = fieldName.Replace("&", ""); if (focusRow.Table.Columns.Contains(fieldName)) { string fieldValue = focusRow[fieldName] + ""; sqlValue = sqlValue.Replace(fieldParams[i], fieldValue); } } } //MessageBox.Show(sqlValue); DataTable dtTable = SqlHelper.ExecuteDataSet(sqlValue).Tables[0]; edit.Properties.DataSource = dtTable; } } } } /// /// 关联搜索 /// /// /// private void lookUp_EditValueChanged(object sender, EventArgs e) { return; if (sender is SearchLookUpEdit) { SearchLookUpEdit edit = (sender as SearchLookUpEdit); LookUpTag lookUpTag = edit.Properties.Tag as LookUpTag; var focusRow = gridView.GetDataRow(gridView.FocusedRowHandle); if (focusRow != null && lookUpTag != null) { string columnName = lookUpTag.ColumnName; string unionFields = lookUpTag.unionFields; string unionValue = lookUpTag.unionValue; string valueMember = lookUpTag.ValueMember; string displayMember = lookUpTag.DisplayMember; unionValue = ReqSqlParam(unionValue, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName); string cellValue = string.IsNullOrEmpty(edit.EditValue + "") ? "" : edit.EditValue.ToString(); unionValue = unionValue.Replace("{" + columnName + "}", cellValue); var fieldParams = GetParamValue(unionValue); for (int i = 0; i < fieldParams.Count; i++) { string fieldName = fieldParams[i].Replace("{", "").Replace("}", ""); string fieldValue = focusRow[fieldName] + ""; unionValue = unionValue.Replace(fieldParams[i], fieldValue); } DataTable dtTable = SqlHelper.ExecuteDataSet(unionValue).Tables[0]; if (dtTable.Rows.Count > 0) { DataRow row = dtTable.Rows[0]; string[] unionFieldSplit = unionFields.Split(','); for (int i = 0; i < unionFieldSplit.Count(); i++) { string fieldName = unionFieldSplit[i]; gridView.SetRowCellValue(gridView.FocusedRowHandle, gridView.Columns[fieldName], row[fieldName]); } } else { string[] unionFieldSplit = unionFields.Split(','); for (int i = 0; i < unionFieldSplit.Count(); i++) { string fieldName = unionFieldSplit[i]; gridView.SetRowCellValue(gridView.FocusedRowHandle, gridView.Columns[fieldName], null); } } } } } #endregion private void CreateButtonEdit(GridColumn gridColumn, DataRow row) { FrmMain frmMain = new FrmMain(); String SQL = row["fieldsql"].ToString(); SQL = GetDefaultValue(SQL, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName); Dictionary Columns = new Dictionary(); Columns.Add(row["fieldsqlid"].ToString(), "编码"); Columns.Add(row["fieldsqlname"].ToString(), "名称"); if (SQL.IndexOf("Remark", StringComparison.OrdinalIgnoreCase) != -1) Columns.Add("Remark", "备注"); frmMain.IsMultiple = true; frmMain.Columns = Columns; int fieldsqlTag = Convert.ToInt32(row["fieldsqlTag"]); frmMain.ValueField = row["fieldsqlid"] + ""; frmMain.TextField = row["fieldsqlname"] + ""; frmMain.IsText = fieldsqlTag; frmMain.SQL = SQL; frmMain.sourceSQL = SQL; // 多选 if ((fieldsqlTag == 33 || fieldsqlTag == 34) && SQL.Contains("#")) { SQL = Regex.Replace(SQL, "#[^##]+#", " 1<>1 "); } DataTable dtb = SqlHelper.ExecuteDataSet(SQL).Tables[0]; if (!lookupDatas.ContainsKey(gridColumn.FieldName)) { lookupTables.Add(gridColumn.FieldName, dtb); } Dictionary lookupDt = new Dictionary(); foreach (DataRow item in dtb.Rows) { lookupDt.Add(item[frmMain.ValueField] + "", item[frmMain.TextField] + ""); } if (!lookupDatas.ContainsKey(gridColumn.FieldName)) { lookupDatas.Add(gridColumn.FieldName, lookupDt); } RepositoryItemButtonEdit btnEdit = new RepositoryItemButtonEdit(); btnEdit.AutoHeight = false; btnEdit.Buttons[0].Tag = frmMain; btnEdit.Name = "btnEdit"; btnEdit.Tag = fieldsqlTag; btnEdit.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(this.btnEdit_ButtonClick); gridControl.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] { btnEdit }); gridColumn.OptionsColumn.ReadOnly = true; gridColumn.ColumnEdit = btnEdit; } void btnEdit_ButtonClick(object sender, ButtonPressedEventArgs e) { ButtonEdit btnEdit = (ButtonEdit)sender; FrmMain frmMain = (FrmMain)e.Button.Tag; if (frmMain.IsText == 13 || frmMain.IsText == 33) { frmMain.ReturnValue = btnEdit.Text; } else { frmMain.ReturnText = btnEdit.Text; } var focusRow = gridView.GetDataRow(gridView.FocusedRowHandle); if (focusRow != null) { string tmpsql = frmMain.sourceSQL + ""; tmpsql = tmpsql.Replace("#", "").Replace("#", ""); var fieldParams = GetParamValue(tmpsql); //从单据头取值 if (pnlMain != null) { for (int i = 0; i < fieldParams.Count; i++) { string fieldName = fieldParams[i].Replace("{", "").Replace("}", ""); Control[] ctl = pnlMain.Controls.Find("txt_" + fieldName, true); if ((ctl != null) && (ctl.Length > 0)) { string fieldValue = GetControlText(ctl[0]); tmpsql = tmpsql.Replace(fieldParams[i], fieldValue); } } } //从选中行取值 fieldParams = GetParamValue(tmpsql); for (int i = 0; i < fieldParams.Count; i++) { string fieldName = fieldParams[i].Replace("{", "").Replace("}", ""); string fieldValue = focusRow[fieldName] + ""; tmpsql = tmpsql.Replace(fieldParams[i], fieldValue); } frmMain.SQL = tmpsql; } DialogResult dr = frmMain.ShowDialog(); if (dr == DialogResult.OK) { String value = string.Empty; if (frmMain.IsText == 13 || frmMain.IsText == 33) { value = frmMain.ReturnValue; } else { value = frmMain.ReturnText; } btnEdit.Text = value; } } //private void GetComboBox(string sql, string key, string value, string colum, GridColumn gc, int fieldsqlTag) { // RepositoryItemComboBox combobox = new RepositoryItemComboBox(); // sql = GetDefaultValue(sql, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName); // DataTable dt = SqlHelper.ExecuteDataSet(sql).Tables[0]; // foreach (DataRow item in dt.Rows) // combobox.Items.Add(item[value]); // gc.ColumnEdit = combobox; //} #region 获取参数 public static List GetParamValue(string param) { string SqlParamRegex = "{([^{])+}"; List list = new List(); Regex regex = new Regex(SqlParamRegex); MatchCollection mcs = regex.Matches(param); foreach (Match item in mcs) { list.Add(item.Value); } return list; } #endregion /// /// 获取默认值 /// /// /// public static string GetDefaultValue(string defaultValue, string LoginId, string LoginName) { string result = defaultValue; if (defaultValue.IndexOf("loginid", StringComparison.OrdinalIgnoreCase) != -1) { List list = GetParamValue(defaultValue); foreach (string s in list) { if (s.IndexOf("loginid", StringComparison.OrdinalIgnoreCase) != -1) result = result.Replace(s, LoginId); } } if (defaultValue.IndexOf("loginname", StringComparison.OrdinalIgnoreCase) != -1) { List list = GetParamValue(defaultValue); foreach (string s in list) { if (s.IndexOf("loginname", StringComparison.OrdinalIgnoreCase) != -1) result = result.Replace(s, LoginName); } } if (result.IndexOf('@') != -1) { object obj = SqlHelper.ExecuteScalar(CommandType.Text, result.Replace("@", "")); if (obj != null) { result = obj.ToString(); } } if (result == "guid") { result = Guid.NewGuid().ToString(); } ////代表传入其他参数格式{#p_1},{#p_2}.. //if (defaultValue.IndexOf("#p_", StringComparison.OrdinalIgnoreCase) != -1) //{ // List list = PubClass.GetParamValue(defaultValue); // foreach (string s in list) // { // string idx = s.Replace("{#p_", "").Replace("}", ""); // int i = 0; // if (int.TryParse(idx, out i)) // { // result = result.Replace(s, otherParams[i - 1]); // } // } //} return result; } public static string ReqSqlParam(string sql, string OperatorId, string OperatorName) { string sourceSql = sql; List listParm = GetParamValue(sql); foreach (string s in listParm) { if (s.IndexOf("loginid", StringComparison.OrdinalIgnoreCase) != -1) { sourceSql = sourceSql.Replace(s, OperatorId); } if (s.IndexOf("loginname", StringComparison.OrdinalIgnoreCase) != -1) { sourceSql = sourceSql.Replace(s, OperatorName); } if (s.IndexOf("groupid", StringComparison.OrdinalIgnoreCase) != -1) { sourceSql = sourceSql.Replace(s, ERPInfo.Instance.GroupId); } } return sourceSql; } /// /// 替换sql /// /// public static string ReqSqlWhere(DataRow row, string param) { List listParm = GetParamValue(param); foreach (string s in listParm) { string filedName = s.Replace("{", "").Replace("}", ""); param = param.Replace(s, row[filedName].ToString()); } param = ReqExecuteProc(param); return SqlToCode(param); } public static string ReqExecuteProc(string param) { string result = param; if (param.IndexOf("!", StringComparison.OrdinalIgnoreCase) != -1) { result = result.Replace("!", "").Replace("(", " ").Replace(")", ""); DataTable dt = SqlHelper.ExecuteDataSet(CommandType.Text, "exec " + result, "temp").Tables[0]; if (dt != null && dt.Rows.Count > 0) { result = (dt.Rows[0][0] + "" == "") || (dt.Rows[0][0] + "" == "0") ? "false" : "true"; } } return result; } private void GetComboBox(string sql, string key, string value, string colum, GridColumn gc, int fieldsqlTag) { string tmpsql = sql; tmpsql = ReqSqlParam(tmpsql, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName); RepositoryItemComboBox combobox = new RepositoryItemComboBox(); combobox.ImmediatePopup = true; combobox.PopupSizeable = true; combobox.DropDownRows = 20; combobox.DropDownItemHeight = 20; combobox.PopupBorderStyle = PopupBorderStyles.Flat; combobox.Tag = value + "^" + tmpsql; tmpsql = Regex.Replace(tmpsql, "#[^##]+#", " 1=1 "); if (fieldsqlTag != 23) { DataTable dt = SqlHelper.ExecuteDataSet(tmpsql).Tables[0]; foreach (DataRow item in dt.Rows) combobox.Items.Add(item[value]); } combobox.NullText = ""; //combobox.ButtonClick += new ButtonPressedEventHandler(comboButtonClick); if (fieldsqlTag == 23) combobox.QueryPopUp += new CancelEventHandler(comboQueryPopup); gc.ColumnEdit = combobox; } private void comboQueryPopup(object sender, CancelEventArgs e) { //MessageBox.Show(sender.ToString()); if (sender is ComboBoxEdit) { var focusRow = gridView.GetDataRow(gridView.FocusedRowHandle); if (focusRow != null) { ComboBoxEdit edit = (sender as ComboBoxEdit); string tmpsql = edit.Properties.Tag.ToString(); if (!string.IsNullOrEmpty(tmpsql)) { string listValue = tmpsql.Substring(0, tmpsql.IndexOf("^")); string sqlValue = tmpsql.Replace("#", "").Replace("#", ""); sqlValue = sqlValue.Substring(sqlValue.IndexOf("^") + 1); var fieldParams = GetParamValue(sqlValue); //从单据头取值 if (pnlMain != null) { for (int i = 0; i < fieldParams.Count; i++) { string fieldName = fieldParams[i].Replace("{", "").Replace("}", ""); Control[] ctl = pnlMain.Controls.Find("txt_" + fieldName, true); if ((ctl != null) && (ctl.Length > 0)) { string fieldValue = GetControlText(ctl[0]); sqlValue = sqlValue.Replace(fieldParams[i], fieldValue); } } } //从选中行取值 fieldParams = GetParamValue(sqlValue); for (int i = 0; i < fieldParams.Count; i++) { string fieldName = fieldParams[i].Replace("{", "").Replace("}", ""); string fieldValue = focusRow[fieldName] + ""; sqlValue = sqlValue.Replace(fieldParams[i], fieldValue); } edit.Properties.Items.Clear(); //MessageBox.Show(listValue + "________" + sqlValue); DataTable dtTable = SqlHelper.ExecuteDataSet(sqlValue).Tables[0]; foreach (DataRow item in dtTable.Rows) edit.Properties.Items.Add(item[listValue]); } } } } private static void LookUpEdit_ProcessNewValue(object sender, DevExpress.XtraEditors.Controls.ProcessNewValueEventArgs e) { DataRow Row; RepositoryItemLookUpEdit Edit; Edit = ((LookUpEdit)sender).Properties; if (e.DisplayValue == null || Edit.NullText.Equals(e.DisplayValue) || string.Empty.Equals(e.DisplayValue)) return; DataTable LookupTable = Edit.DataSource as DataTable; Row = LookupTable.NewRow(); Row[Edit.DisplayMember] = e.DisplayValue; LookupTable.Rows.Add(Row); e.Handled = true; } private static void LookSearchUpEdit_ProcessNewValue(object sender, DevExpress.XtraEditors.Controls.ProcessNewValueEventArgs e) { DataRow Row; RepositoryItemSearchLookUpEdit Edit; Edit = ((SearchLookUpEdit)sender).Properties; if (e.DisplayValue == null || Edit.NullText.Equals(e.DisplayValue) || string.Empty.Equals(e.DisplayValue)) return; DataTable LookupTable = Edit.DataSource as DataTable; Row = LookupTable.NewRow(); Row[Edit.DisplayMember] = e.DisplayValue; LookupTable.Rows.Add(Row); e.Handled = true; } private static void GetMemoEdit(GridColumn gc, GridControl gg) { RepositoryItemMemoEdit memo = new RepositoryItemMemoEdit(); memo.WordWrap = true; gg.RepositoryItems.Add(memo); gc.ColumnEdit = memo; } private static void GetMemoExEdit(GridColumn gc, GridControl gg) { RepositoryItemMemoExEdit memo = new RepositoryItemMemoExEdit(); memo.WordWrap = true; memo.ShowIcon = false; gg.RepositoryItems.Add(memo); gc.ColumnEdit = memo; } /// /// 刷新下拉返回参数数据源 /// public void refreshSearchLookUp() { try { if (dtColumns == null) return; foreach (DataRow row in dtColumns.Rows) { int fieldsqlTag = 0; if (dtColumns.Columns.Contains("fieldsqlTag")) { fieldsqlTag = Convert.ToInt32(row["fieldsqlTag"]); if (fieldsqlTag == 15 || fieldsqlTag == 16) { GridColumn grid = gridView.Columns.ColumnByFieldName(row["fieldname"] + ""); string sql = row["fieldsql"] + ""; sql = GetDefaultValue(sql, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName); sql = Regex.Replace(sql, "#[^##]+#", " 1=1 "); RepositoryItemSearchLookUpEdit edit = grid.ColumnEdit as RepositoryItemSearchLookUpEdit; edit.DataSource = SqlHelper.ExecuteDataTable(sql); grid.ColumnEdit = edit; } } else { fieldsqlTag = Convert.ToInt32(row["fieldTypeId"]); if (fieldsqlTag == 15 || fieldsqlTag == 16) { GridColumn grid = gridView.Columns.ColumnByFieldName(row["fieldname"] + ""); string sql = row["lookupSql"] + ""; sql = GetDefaultValue(sql, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName); sql = Regex.Replace(sql, "#[^##]+#", " 1=1 "); RepositoryItemSearchLookUpEdit edit = grid.ColumnEdit as RepositoryItemSearchLookUpEdit; edit.DataSource = SqlHelper.ExecuteDataTable(sql); grid.ColumnEdit = edit; } } } } catch (Exception) { } } /// /// 创建多选框 /// //private void InitMutilEdit(string key, string value, string sql, GridColumn gc) //{ // FrmMain mutilLookUp = new FrmMain(); // mutilLookUp.ValueField = key; // mutilLookUp.TextField = value; // mutilLookUp.sourceSQL = sql; // RepositoryItemCheckedComboBoxEdit btnEdit = new RepositoryItemCheckedComboBoxEdit(); // btnEdit.NullText = ""; // btnEdit.PopupBorderStyle = PopupBorderStyles.Flat; // btnEdit.AllowNullInput = DefaultBoolean.False; // btnEdit.DisplayMember = value; // btnEdit.ValueMember = key; // btnEdit.SeparatorChar = ','; // btnEdit.DataSource = SqlHelper.ExecuteDataTable(sql); // btnEdit.Buttons[0].Visible = false; // 不能移除,移除后事件不起作用. // btnEdit.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Ellipsis) }); // btnEdit.Buttons[1].Tag = mutilLookUp; // btnEdit.ButtonClick += new ButtonPressedEventHandler(OnButtonEditClick); // gridControl.RepositoryItems.Add(btnEdit); // gc.OptionsColumn.ReadOnly = true; // gc.ColumnEdit = btnEdit; //} //protected void OnButtonEditClick(object sender, ButtonPressedEventArgs e) //{ // CheckedComboBoxEdit btnEdit = (CheckedComboBoxEdit)sender; // FrmMain frmMain = e.Button.Tag as FrmMain; // frmMain.ReturnValue = btnEdit.EditValue + ""; // frmMain.ReturnText = btnEdit.Text; // frmMain.sourceSQL = ReqSqlWhere(this.gridView.GetFocusedDataRow(), frmMain.sourceSQL); // DialogResult result = frmMain.ShowDialog(); // if (result == DialogResult.OK) // { // btnEdit.EditValue = frmMain.ReturnValue; // } //} private void GetLookUpEdit(string sql, string key, string value, string colum, GridColumn gc, int fieldsqlTag, GridControl gg) { RepositoryItemLookUpEdit combobox = new RepositoryItemLookUpEdit(); //combobox.ProcessNewValue += LookUpEdit_ProcessNewValue; combobox.SearchMode = SearchMode.AutoFilter; combobox.ImmediatePopup = false; combobox.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard; string tmpsql = sql; tmpsql = ReqSqlParam(tmpsql, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName); combobox.DataSource = SqlHelper.ExecuteDataSet(tmpsql).Tables[0]; if (!lookupTables.ContainsKey(colum)) lookupTables.Add(colum, combobox.DataSource as DataTable); combobox.DisplayMember = value; combobox.ValueMember = key; LookUpColumnInfo ci = new LookUpColumnInfo(); ci.Caption = "编号"; ci.FieldName = key; ci.Visible = false; combobox.Columns.Add(ci); LookUpColumnInfo ci2 = new LookUpColumnInfo(); ci2.Caption = "名称"; ci2.FieldName = value; ci2.Visible = true; combobox.Columns.Add(ci2); gg.RepositoryItems.Add(combobox); if (sql.IndexOf("remark", StringComparison.OrdinalIgnoreCase) != -1) { LookUpColumnInfo ci3 = new LookUpColumnInfo(); ci3.Caption = "备注"; ci3.FieldName = "remark"; ci3.Visible = true; combobox.Columns.Add(ci3); } combobox.NullText = ""; combobox.AllowNullInput = DevExpress.Utils.DefaultBoolean.False; gc.ColumnEdit = combobox; } private void GetHyperLink(GridColumn gc) { //RepositoryItemHyperLinkEdit hypl = new RepositoryItemHyperLinkEdit(); //gc.ColumnEdit = hypl; } private void GetProgressBar(GridColumn gc) { RepositoryItemProgressBar progress = new RepositoryItemProgressBar(); progress.ShowTitle = true; gc.ColumnEdit = progress; } private void GetCheckColumn(GridColumn gc) { RepositoryItemCheckEdit check = new RepositoryItemCheckEdit(); check.ValueChecked = 1; check.ValueUnchecked = 0; gc.ColumnEdit = check; } private void GetCheckComboColumn(string sql, string key, string value, string colum, GridColumn gc, int fieldsqlTag, string listKey, string listValue, string unionFields, string unionValue) { RepositoryItemCheckedComboBoxEdit combobox = new RepositoryItemCheckedComboBoxEdit(); sql = GetDefaultValue(sql, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName); combobox.AllowFocused = true; //if ((fieldsqlTag == 15 || fieldsqlTag == 16) && sql.Contains("#")) //{ // combobox.Tag = new LookUpTag() { Sql = sql, ValueMember = key, DisplayMember = listValue }; // combobox.QueryPopUp += new CancelEventHandler(lookUp_QueryPopUp); // sql = Regex.Replace(sql, "#[^##]+#", " 1=1 "); //} DataTable dtTable = SqlHelper.ExecuteDataSet(sql).Tables[0]; lookupTables.Add(colum, dtTable); combobox.DataSource = dtTable; combobox.DisplayMember = listValue; if (fieldsqlTag == 18) { combobox.ValueMember = key; } else { combobox.ValueMember = listValue; } if (!string.IsNullOrEmpty(unionFields) && !string.IsNullOrEmpty(unionValue)) { //combobox.Tag = new LookUpTag() { ColumnName = colum, ValueMember = key, DisplayMember = listValue, unionFields = unionFields, unionValue = unionValue }; LookUpTag lut = combobox.Tag as LookUpTag; if (lut == null) combobox.Tag = new LookUpTag() { ColumnName = colum, ValueMember = key, DisplayMember = listValue, unionFields = unionFields, unionValue = unionValue }; else { lut.ColumnName = colum; lut.ValueMember = key; lut.DisplayMember = listValue; lut.unionFields = unionFields; lut.unionValue = unionValue; } combobox.EditValueChanged += new EventHandler(lookUp_EditValueChanged); } combobox.NullText = ""; gridMain.RepositoryItems.Add(combobox); gc.ColumnEdit = combobox; } private void GetLookUpEdit(string sql, string key, string value, string colum, GridColumn gc, int fieldsqlTag, string listKey, string listValue, string unionFields, string unionValue) { sql = GetDefaultValue(sql, ERPInfo.Instance.EmployeeId.ToString(), ERPInfo.Instance.EmployeeName); RepositoryItemSearchLookUpEdit combobox = new RepositoryItemSearchLookUpEdit(); //combobox.ShowAddNewButton = true; //combobox.Buttons[2].Caption = "新增"; combobox.AllowFocused = true; int allWidth = 0; if ((fieldsqlTag == 15 || fieldsqlTag == 16)) { combobox.Tag = new LookUpTag() { Sql = sql, ValueMember = key, DisplayMember = listValue }; combobox.QueryPopUp += new CancelEventHandler(lookUp_QueryPopUp); sql = Regex.Replace(sql, "#[^##]+#", " 1=1 "); } DataTable dtTable = SqlHelper.ExecuteDataSet(sql).Tables[0]; dtTable.Prefix = ""; if (!lookupTables.ContainsKey(colum)) lookupTables.Add(colum, dtTable); combobox.DataSource = dtTable; combobox.DisplayMember = listValue; combobox.ValueMember = key; //if (listValue.ToLower() != key.ToLower()) //{ // GridColumn ci = new GridColumn(); // ci.Caption = "编号"; // ci.FieldName = listKey; // allWidth += ci.Width = CalcMaxColumnWidth(dtTable, listKey); // ci.Visible = true; // combobox.View.Columns.Add(ci); //} //GridColumn ci2 = new GridColumn(); //ci2.Caption = "名称"; //ci2.FieldName = listValue; //ci2.Visible = true; //allWidth += ci2.Width = CalcMaxColumnWidth(dtTable, listValue); ////ci2.Width = -1; //combobox.View.Columns.Add(ci2); //if (sql.IndexOf("remark", StringComparison.OrdinalIgnoreCase) != -1) //{ // GridColumn ci3 = new GridColumn(); // ci3.Caption = "备注"; // ci3.FieldName = "remark"; // ci3.Visible = true; // allWidth += ci3.Width = CalcMaxColumnWidth(dtTable, "remark"); // combobox.View.Columns.Add(ci3); // //combobox.BestFitMode = BestFitMode.BestFit; // 3列的时候自动计算宽度,否则自动填充满表格 // combobox.View.OptionsView.ColumnAutoWidth = false; //} //else //{ // combobox.BestFitMode = BestFitMode.BestFitResizePopup; //} combobox.View.OptionsView.ShowIndicator = false; combobox.View.OptionsView.ColumnAutoWidth = true; //combobox.View.OptionsView.ShowColumnHeaders = false; combobox.View.Appearance.HeaderPanel.TextOptions.HAlignment = HorzAlignment.Center; combobox.PopupBorderStyle = PopupBorderStyles.Flat; combobox.ShowPopupShadow = true; combobox.AllowNullInput = DevExpress.Utils.DefaultBoolean.False; //combobox.PopupFormSize = new Size(allWidth, 250); combobox.ShowFooter = false; // 是否显示底部 if (!string.IsNullOrEmpty(unionFields) && !string.IsNullOrEmpty(unionValue)) { //combobox.Tag = new LookUpTag() { ColumnName = colum, ValueMember = key, DisplayMember = listValue, unionFields = unionFields, unionValue = unionValue }; LookUpTag lut = combobox.Tag as LookUpTag; if (lut == null) combobox.Tag = new LookUpTag() { ColumnName = colum, ValueMember = key, DisplayMember = listValue, unionFields = unionFields, unionValue = unionValue }; else { lut.ColumnName = colum; lut.ValueMember = key; lut.DisplayMember = listValue; lut.unionFields = unionFields; lut.unionValue = unionValue; } combobox.EditValueChanged += new EventHandler(lookUp_EditValueChanged); //combobox.Validating += new CancelEventHandler(lookUp_EditValidating); } //if (listValue.ToLower() == key.ToLower()) //{ // combobox.View.Columns[1].Visible = false; // combobox.View.Columns[0].Width = 1; // MessageBox.Show("OK"); //} allWidth = 0; foreach (DataColumn col in dtTable.Columns) { //MessageBox.Show(col.ColumnName); GridColumn ci = new GridColumn(); ci.FieldName = col.ColumnName; if (ci.FieldName.ToLower() == "dm" || ci.FieldName.ToLower() == "showid") ci.Caption = "编码"; if (ci.FieldName.ToLower() == "mc" || ci.FieldName.ToLower() == "showname") ci.Caption = "名称"; if (ci.FieldName.ToLower() == "remark") ci.Caption = "备注"; //ci.Width = -1; //MessageBox.Show(ci.FieldName.Substring(0, 1)); if (ci.FieldName.IndexOf("_parent_", StringComparison.OrdinalIgnoreCase) != -1) dtTable.Prefix = ci.FieldName; if (ci.FieldName.Substring(0, 1) == "_") ci.Visible = false; else { ci.Visible = true; allWidth += ci.Width = CalcMaxColumnWidth(dtTable, ci.FieldName) + 25; } combobox.View.Columns.Add(ci); } combobox.PopupFormSize = new Size(allWidth + 40, 300); //combobox.View.Columns[0].Visible = false; combobox.NullText = ""; gridMain.RepositoryItems.Add(combobox); gc.ColumnEdit = combobox; combobox.ProcessNewValue += LookSearchUpEdit_ProcessNewValue; combobox.ImmediatePopup = true; combobox.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard; } public void lookUp_EditValidating(object sender, CancelEventArgs e) { //MessageBox.Show("OK"); } public void SetColumns(DataTable dt) { _currentSetColumnType = 4; dtColumns = dt; isSetColumnWidth = dt.Rows.Count > 0; gridView.Columns.Clear(); for (int i = 0; i < dt.Rows.Count; i++) { DataRow row = dt.Rows[i]; GridColumn gridColumn = new GridColumn(); gridColumn.FieldName = row["fieldname"].ToString(); gridColumn.Name = row["fieldname"].ToString(); gridColumn.VisibleIndex = i; gridColumn.Caption = row["userName"].ToString(); gridColumn.Width = Convert.ToInt32(row["width"]); gridColumn.Visible = string.IsNullOrEmpty(row["isVisible"] + "") ? true : !Convert.ToBoolean(row["isVisible"]); if (Convert.ToInt32(row["width"]) == 0) gridColumn.Visible = false; string dataFormat = row["DataFormat"] + ""; gridColumn.OptionsColumn.AllowEdit = false; gridColumn.OptionsColumn.ReadOnly = false; gridColumn.OptionsFilter.FilterPopupMode = FilterPopupMode.CheckedList; CommonUtils.DataFormat(gridColumn, dataFormat, 7); int isSum = Convert.ToInt32(row["isSum"]); string calcExpr = ""; if (row.Table.Columns.Contains("calcExpr")) calcExpr = row["calcExpr"] + ""; //处理统计 if (isSum == 1) { gridView.OptionsView.ShowFooter = true; if (calcExpr.IndexOf("/{") == -1) { gridColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), "{0:" + dataFormat + "}") }); gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Sum, row["fieldname"].ToString(), null, "{0:" + dataFormat + "}") }); } else { gridColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Custom, row["fieldname"].ToString(), "{0:" + dataFormat + "}") }); gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Custom, row["fieldname"].ToString(), null, "{0:" + dataFormat + "}") }); } } gridView1.Columns.Add(gridColumn); } if (gridView.Columns.Count > 0) { GridColumn firstColumn = gridView.Columns[0]; if (firstColumn != null) { gridView.OptionsView.ShowFooter = true; firstColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Count, firstColumn.FieldName.ToString(), "合计: {0:#,###}行") }); gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Count, firstColumn.FieldName.ToString(), null, "合计: {0:#,###}行") }); } } } public void SetDataSource(string sql, bool isColumnFix = false) { if (string.IsNullOrEmpty(sql)) return; DataTable dt = SqlHelper.ExecuteDataSet(sql).Tables[0]; if (isColumnFix) { gridView.Columns.Clear(); } gridControl.DataSource = null; gridControl.DataSource = dt; if (isColumnFix) { for (int i = 0; i < gridView.Columns.Count; i++) { try { GridColumn col = gridView.Columns[i]; if (i == 0) { gridView.OptionsView.ShowFooter = true; col.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Count, col.FieldName.ToString(), "合计: {0:#,###}行") }); gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Count, col.FieldName.ToString(), null, "合计: {0:#,###}行") }); } if (col.FieldName.Contains("_")) { string[] colSplit = col.FieldName.Split('_'); if (colSplit.Length >= 2) { col.Caption = colSplit[0]; col.Width = Convert.ToInt32(colSplit[1]); if (Convert.ToInt32(colSplit[1]) == 0) col.Visible = false; if (colSplit.Length > 2) { bool visible = "1".Equals(colSplit[2]); gridView.OptionsView.ShowFooter = true; if (visible) { col.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Sum, col.FieldName, "{0:0.############}") }); gridView.GroupSummary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridGroupSummaryItem(DevExpress.Data.SummaryItemType.Sum, col.FieldName, null, "{0:0.############}") }); } } } } else { col.Width = 150; } } catch (Exception) { } } } } /// /// 线程调用 /// /// //public void SetDataSource(object sql) //{ // try // { // string sqlValue = sql + ""; // gridControl.DataSource = null; // if (string.IsNullOrEmpty(sqlValue)) // return; // DataTable dt = SqlHelper.ExecuteDataSetForThread(sqlValue).Tables[0]; // gridControl.DataSource = dt; // if (isSetColumnWidth) // { // foreach (GridColumn col in gridView.Columns) // { // try // { // if (col.Caption.Contains("_")) // { // string[] colSplit = col.Caption.Split('_'); // if (colSplit.Length == 2) // { // col.Caption = colSplit[0]; // col.Width = Convert.ToInt32(colSplit[1]); // if (Convert.ToInt32(colSplit[1]) == 0) // col.Visible = false; // } // } // else // { // col.Width = 150; // } // } // catch (Exception) // { // } // } // } // } // catch (Exception ex) // { // } //} /// /// 计算最大宽度 /// private int CalcMaxColumnWidth(DataTable dTable, string columnName) { int MaxWidth = 0; int maxRow = 20; for (int i = 0; i < dTable.Rows.Count; i++) { if (i < maxRow) { DataRow row = dTable.Rows[i]; int columnWidth = CommonUtils.GetFontWidth(row[columnName] + ""); if (columnWidth > MaxWidth) { MaxWidth = columnWidth; } } } //foreach (DataRow row in dTable.Rows) //{ // int columnWidth = CommonUtils.GetFontWidth(row[columnName] + ""); // if (columnWidth > MaxWidth) // { // MaxWidth = columnWidth; // } //} return MaxWidth; } private void gridView1_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e) { try { e.Appearance.TextOptions.HAlignment = HorzAlignment.Center; e.Appearance.Options.UseBackColor = true; e.Appearance.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.BackwardDiagonal; if (e.Info.IsRowIndicator) { if (e.RowHandle >= 0) { e.Info.DisplayText = (e.RowHandle + 1).ToString(); } if (gridView1.FocusedRowHandle == e.RowHandle) { e.Appearance.BackColor = Color.Blue; e.Info.BackAppearance.BackColor = Color.Blue; e.Appearance.BackColor2 = Color.Blue; e.Info.BackAppearance.BackColor2 = Color.Blue; e.Appearance.ForeColor = Color.Blue; } } } catch (Exception ex) { } } public void SetFocus(string searchText, string colname) { DevExpress.XtraGrid.Views.Base.ColumnView view = (DevExpress.XtraGrid.Views.Base.ColumnView)this.gridControl.FocusedView; DevExpress.XtraGrid.Columns.GridColumn column = view.Columns[colname]; if (column != null) { int rhFound = view.LocateByDisplayText(view.FocusedRowHandle + 1, column, searchText); if (rhFound != DevExpress.XtraGrid.GridControl.InvalidRowHandle) { view.FocusedRowHandle = rhFound; view.FocusedColumn = column; } } } /// /// 行改变事件 /// public object RowColorCondtion { get; set; } public void gridView1_SelectionChange(object sender, SelectionChangedEventArgs e) { isCancel = false; GridCell[] cells = gridView1.GetSelectedCells(); pnlBottom.Visible = (cells.Length > 1); pnlSpec.Visible = (cells.Length > 1); label1.Text = "求和:" + cells.Length.ToString(); double lSum = 0.00; double lAvg = 0.00; int lCount = cells.Length; foreach (GridCell item in cells) { double lNumber = 0.00; string cellValue = "0"; if (item.Column != null) cellValue = gridView1.GetRowCellValue(item.RowHandle, item.Column) + ""; if (double.TryParse(cellValue, out lNumber)) lSum += lNumber; } lAvg = lSum / lCount; label1.Text = "求和:" + lSum.ToString() + " 计数:" + lCount.ToString() + " 平均值:" + lAvg.ToString(); } public void gridView1_CancelEditor(object sender, CancelEventArgs e) { e.Cancel = isCancel; } #region 表格列扩展 /// /// /// /// /// public void gridView1_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e) { if (e.HitInfo.Column == null) return; //判断是否是列标题的右键菜单 if (e.MenuType == GridMenuType.Column) { string gridMerge = "开启数据合并"; if (gridView1.OptionsView.AllowCellMerge) gridMerge = "关闭数据合并"; string mergeCaption = "数据合并"; if (e.HitInfo.Column != null && e.HitInfo.Column.OptionsColumn.AllowMerge == DefaultBoolean.True) mergeCaption = "取消合并"; GridViewColumnMenu menu = e.Menu as GridViewColumnMenu; DXMenuItem itemFixLeft = new DXMenuItem("冻结列(左)", OnFixLeftItemClick); DXMenuItem itemFixLeftAll = new DXMenuItem("冻结列(左全部)", OnFixLeftAllItemClick); DXMenuItem itemFixRight = new DXMenuItem("冻结列(右)", OnFixRightItemClick); DXMenuItem itemFixRightAll = new DXMenuItem("冻结列(右全部)", OnFixRightAllItemClick); DXMenuItem itemUnFix = new DXMenuItem("清除冻结", OnUnFixItemClick); DXMenuItem gridMergeItem = new DXMenuItem(gridMerge, OnGridMergeItemClick); DXMenuItem itemMerge = new DXMenuItem(mergeCaption, OnMergeItemClick); DXMenuItem itemSaveColumn = new DXMenuItem("保存表格属性", OnSaveItemClick); itemSaveColumn.Tag = gridView1; DXMenuItem itemClearColumn = new DXMenuItem("恢复表格属性", OnClearItemClick); itemClearColumn.Tag = this; DXMenuItem itemExportColumn = new DXMenuItem("导出表格数据", OnExportItemClick); itemExportColumn.Tag = gridView1; DXMenuItem itemPrintColumn = new DXMenuItem("打印表格数据", OnPrintItemClick); itemPrintColumn.Tag = gridView1; DXMenuItem itemSortColumn = new DXMenuItem("清除全部列排序", OnClearSortItemClick); itemSortColumn.Tag = gridView1; itemFixLeft.Tag = itemFixRight.Tag = itemUnFix.Tag = e.HitInfo.Column; itemFixLeftAll.Tag = itemFixRightAll.Tag = e.HitInfo.Column; itemFixLeft.Image = Lskj.MyControl.Properties.Resources.fix_left; itemFixLeftAll.Image = Lskj.MyControl.Properties.Resources.fix_left; itemFixRight.Image = Lskj.MyControl.Properties.Resources.fix_right; itemFixRightAll.Image = Lskj.MyControl.Properties.Resources.fix_right; itemUnFix.Image = Lskj.MyControl.Properties.Resources.fix_exit; gridMergeItem.Tag = gridView1; itemMerge.Tag = e.HitInfo.Column; if (e.HitInfo.Column.Fixed == FixedStyle.Left) itemFixLeft.Enabled = false; if (e.HitInfo.Column.Fixed == FixedStyle.Right) itemFixRight.Enabled = false; if (e.HitInfo.Column.Fixed == FixedStyle.None) itemUnFix.Enabled = false; itemMerge.Enabled = gridView1.OptionsView.AllowCellMerge; itemFixLeft.BeginGroup = true; menu.Items.Add(itemFixLeft); menu.Items.Add(itemFixLeftAll); //menu.Items.Add(itemFixRight); //menu.Items.Add(itemFixRightAll); menu.Items.Add(itemUnFix); gridMergeItem.BeginGroup = true; menu.Items.Add(gridMergeItem); menu.Items.Add(itemMerge); menu.Items.Add(itemExportColumn); menu.Items.Add(itemPrintColumn); gridMergeItem.BeginGroup = true; menu.Items.Add(itemSortColumn); if ((!string.IsNullOrEmpty(FormKey)) && IsSaveColumn) { gridMergeItem.BeginGroup = true; menu.Items.Add(itemSaveColumn); menu.Items.Add(itemClearColumn); } } } /// /// 清除所有列排序 /// /// /// private void OnClearSortItemClick(object sender, EventArgs e) { try { foreach (GridColumn col in gridView1.Columns) { col.SortOrder = ColumnSortOrder.None; } } catch (Exception) { XtraMessageBox.Show("清除失败."); } } /// /// 冻结列左侧 /// /// /// private void OnFixLeftItemClick(object sender, EventArgs e) { DXMenuItem item = sender as DXMenuItem; GridColumn column = item.Tag as GridColumn; column.Fixed = FixedStyle.Left; } /// /// 冻结列右侧 /// /// /// private void OnFixRightItemClick(object sender, EventArgs e) { DXMenuItem item = sender as DXMenuItem; GridColumn column = item.Tag as GridColumn; column.Fixed = FixedStyle.Right; } /// /// 取消冻结列 /// /// /// private void OnUnFixItemClick(object sender, EventArgs e) { DXMenuItem item = sender as DXMenuItem; GridColumn column = item.Tag as GridColumn; column.Fixed = FixedStyle.None; column.VisibleIndex = column.AbsoluteIndex; } /// /// 冻结列左侧全部 /// /// /// private void OnFixLeftAllItemClick(object sender, EventArgs e) { DXMenuItem item = sender as DXMenuItem; GridColumn column = item.Tag as GridColumn; FixAllColumns(FixedStyle.Left, column); } /// /// 冻结列右侧全部 /// /// /// private void OnFixRightAllItemClick(object sender, EventArgs e) { DXMenuItem item = sender as DXMenuItem; GridColumn column = item.Tag as GridColumn; FixAllColumns(FixedStyle.Right, column); } private void FixAllColumns(FixedStyle fixedStyle, GridColumn curCol) { switch (fixedStyle) { case FixedStyle.Left: { foreach (GridColumn item in gridView.Columns) { if (item.AbsoluteIndex <= curCol.AbsoluteIndex) { item.Fixed = FixedStyle.Left; } } } break; case FixedStyle.Right: { foreach (GridColumn item in gridView.Columns) { if (item.AbsoluteIndex >= curCol.AbsoluteIndex) { item.Fixed = FixedStyle.Right; } } } break; } } /// /// 合并 /// /// /// private void OnMergeItemClick(object sender, EventArgs e) { DXMenuItem item = sender as DXMenuItem; GridColumn column = item.Tag as GridColumn; //column.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.True; if (column.OptionsColumn.AllowMerge == DefaultBoolean.True) column.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.False; else column.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True; } /// /// 合并 /// /// /// private void OnGridMergeItemClick(object sender, EventArgs e) { DXMenuItem item = sender as DXMenuItem; GridView grv = item.Tag as GridView; //column.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.True; if (grv.OptionsView.AllowCellMerge == true) grv.OptionsView.AllowCellMerge = false; else { grv.OptionsView.AllowCellMerge = true; MessageBox.Show("请注意:数据合并模式已开启,该模式下将不能进行区域选择、复制和粘贴\r\n要退出合并模式请再次点击进行切换"); } } /// /// 保存表格列信息 /// /// /// private void OnSaveItemClick(object sender, EventArgs e) { if (string.IsNullOrEmpty(FormKey)) return; if (XtraMessageBox.Show("是否将表格列头信息保存至数据库", "询问", MessageBoxButtons.YesNo) != DialogResult.Yes) return; DataTable dtTable = new DataTable(); try { dtTable = SqlHelper.ExecuteDataSet(string.Format("select 1 from P_systemGridConfigTab where formkey='{0}' and operatorId='{1}'", FormKey, OperatorId)).Tables[0]; } catch (Exception ex) { XtraMessageBox.Show("检测到未开启列保存列功能,请联系朗速"); return; } // 检查当前操作人员是否已经保存过列信息 StringBuilder sb = new StringBuilder(); DXMenuItem item = sender as DXMenuItem; GridView grv = item.Tag as GridView; if (OperatorName != "管理员") { if (dtTable.Rows.Count > 0) { foreach (GridColumn col in grv.Columns) { string tempSql = string.Format(@"update P_systemGridConfigTab set orderid='{0}',fieldWidth='{1}',isvisible={2} where formkey='{3}' and fieldname='{4}' and operatorid='{5}';", col.VisibleIndex, col.Width, Convert.ToInt32(col.Visible), FormKey, col.FieldName, OperatorId); sb.Append(tempSql); } if (!string.IsNullOrEmpty(sb.ToString())) { SqlHelper.ExecuteNonQuery(sb.ToString()); } } else { foreach (GridColumn col in grv.Columns) { string tempSql = string.Format(@"insert into P_systemGridConfigTab(formkey,fieldname,username,orderid,isvisible,operatorid,operatorName,operatedate,fieldWidth) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}',getdate(),'{7}');", FormKey, col.FieldName, col.Caption, col.VisibleIndex, Convert.ToInt32(col.Visible), OperatorId, OperatorName, col.Width); sb.Append(tempSql); } if (!string.IsNullOrEmpty(sb.ToString())) { SqlHelper.ExecuteNonQuery(sb.ToString()); } } } #region old if (OperatorName == "管理员") { string tmpsql = string.Empty; string colTable = string.Empty; string keyField = string.Empty; string stepCode = string.Empty; int keyOrder = 0; //DXMenuItem item = sender as DXMenuItem; //GridView grv = item.Tag as GridView; //基础档案主表 if (ModuleType == 1) { colTable = "p_systemwordbooktab"; keyField = "tab"; tmpsql = "select top 1 orderid from p_systemwordbooktab where tab='" + ModuleKey + "' order by orderid"; object obj = SqlHelper.ExecuteScalar(CommandType.Text, tmpsql); if (obj != null) keyOrder = Convert.ToInt32(obj); } //报表明细 if (ModuleType == 2) { colTable = "p_systemDlltabDetailGrid"; keyField = "detailkey"; } //单据明细 if (ModuleType == 3) { colTable = "p_systembillDetail"; keyField = "typecode"; } //单据来源主信息 if (ModuleType == 4) { colTable = "p_systembillsourcegrid"; keyField = "sourceid"; } //单据来源明细信息 if (ModuleType == 5) { colTable = "p_systembillsourcedetail"; keyField = "sourceid"; } //单据审核列表 if (ModuleType == 6) { colTable = "p_systembillstepgrid"; keyField = "typeCode"; if (!string.IsNullOrEmpty(ModuleKey) && ModuleKey.Split('_').Length == 2) { string[] splitStr = ModuleKey.Split('_'); ModuleKey = splitStr[0]; stepCode = splitStr[1]; } } //基础档案审核列表 if (ModuleType == 7) { colTable = "p_systemdlltabflowstepgrid"; keyField = "typeCode"; if (!string.IsNullOrEmpty(ModuleKey) && ModuleKey.Split('_').Length == 2) { string[] splitStr = ModuleKey.Split('_'); ModuleKey = splitStr[0]; stepCode = splitStr[1]; } } // 单据审核附加信息 if (ModuleType == 8) { colTable = "p_systembillauditAttachDetail"; keyField = "attachKey"; } tmpsql = ""; foreach (GridColumn col in grv.Columns) { tmpsql = tmpsql + "update " + colTable + " set width=" + col.Width.ToString() + ((ModuleType == 1) && (col.VisibleIndex == -1) ? " ,vislble=1" : "") + (col.VisibleIndex != -1 ? ",orderid=" + (col.VisibleIndex + keyOrder + (ModuleType == 1 ? 1 : 0)).ToString() : "") + " where " + keyField + "='" + ModuleKey + "' and fieldname='" + col.FieldName + "'"; if (ModuleType == 1) tmpsql = tmpsql + " and orderid<>" + keyOrder.ToString(); if (ModuleType == 7) tmpsql = tmpsql + " and stepCode=" + stepCode; tmpsql = tmpsql + ";"; } //MessageBox.Show(tmpsql); SqlHelper.ExecuteNonQuery(tmpsql); } #endregion XtraMessageBox.Show("保存列信息成功"); } private void OnClearItemClick(object sender, EventArgs e) { if (string.IsNullOrEmpty(FormKey)) return; if (XtraMessageBox.Show("是否将表格列头信息恢复到系统配置状态", "询问", MessageBoxButtons.YesNo) != DialogResult.Yes) return; DataTable dtTable = new DataTable(); try { dtTable = SqlHelper.ExecuteDataSet(string.Format("select 1 from P_systemGridConfigTab where formkey='{0}' and operatorId='{1}'", FormKey, OperatorId)).Tables[0]; } catch (Exception ex) { XtraMessageBox.Show("检测到未开启列保存列功能,请联系朗速"); return; } string sql = string.Format("delete from P_systemGridConfigTab where formkey='{0}' and operatorId='{1}'", FormKey, OperatorId); SqlHelper.ExecuteNonQuery(sql); lookupDatas.Clear(); DXMenuItem item = sender as DXMenuItem; BandedControlEx grd = item.Tag as BandedControlEx; if (grd == null) { GridControlEx grd1 = item.Tag as GridControlEx; switch (_currentSetColumnType) { case 1: grd1.SetColumns(ColumnSQL); break; case 3: grd1.SetColumns3(ColumnSQL); break; case 4: grd1.SetColumns(dtColumns); break; case 2: default: grd1.SetColumns2(dtColumns); break; } } else { switch (_currentSetColumnType) { case 4: grd.SetColumns(dtColumns); break; case 3: grd.SetColumns3(ColumnSQL); break; case 2: default: grd.SetColumns2(dtColumns); break; } } if ((OperatorName == "管理员") && (ModuleType == 1)) { sql = "update p_systemwordbooktab set vislble=vislble4,orderid=oid4 where tab='" + ModuleKey + "' and exists(select 1 from p_systemtab where clientname='钱多多')"; SqlHelper.ExecuteNonQuery(sql); } } /// /// 重置表格列 /// /// public DataTable ResetColumns(DataTable columns) { try { if (string.IsNullOrEmpty(FormKey)) return columns; DataTable dtColumns = SqlHelper.ExecuteDataSet(string.Format("select *,isnull(isvisible,0) as visible1,case when isnull(isvisible,0)=0 then 0 else fieldwidth end as width from P_systemGridConfigTab where formkey='{0}' and operatorid='{1}'", FormKey, OperatorId)).Tables[0]; foreach (DataRow row in dtColumns.Rows) { string fieldname = row["fieldname"] + ""; string orderid = row["orderid"] + ""; string fieldWidth = row["Width"] + ""; string fieldVisible = (Convert.ToInt32(row["visible1"]) == 1 ? 0 : 1).ToString(); foreach (DataRow item in columns.Rows) { if (fieldname.ToLower() == (item["fieldname"] + "").ToLower()) { item["orderid"] = orderid; item["width"] = fieldWidth; } } } DataView dv = columns.DefaultView; dv.Sort = "orderid asc"; return dv.ToTable(); } catch (Exception ex) { } return columns; } /// /// 导出表格数据 /// /// /// private void OnExportItemClick(object sender, EventArgs e) { SaveXls(gridControl); } /// /// 打印表格数据 /// /// /// private void OnPrintItemClick(object sender, EventArgs e) { Preview(gridControl); } #endregion #region 导出Excel /// /// 导出Excel /// /// /// public static int SaveXls(DevExpress.XtraGrid.GridControl GridControlPub) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Title = "导出Excel"; saveFileDialog.Filter = "Excel文件(*.xls)|*.xls|Excel2007|*.xlsx|PDF文件|*.PDF|RTF文件|*.RTF|HTML文件|*.html"; DialogResult dialogResult = saveFileDialog.ShowDialog(); GridControl newGrid = CommonUtils.ReplaceBitType(GridControlPub); if (dialogResult == DialogResult.OK) { DevExpress.XtraPrinting.XlsExportOptions options = new DevExpress.XtraPrinting.XlsExportOptions(); options.TextExportMode = TextExportMode.Text; DevExpress.XtraPrinting.XlsxExportOptions optionsx = new DevExpress.XtraPrinting.XlsxExportOptions(); optionsx.TextExportMode = TextExportMode.Text; if (saveFileDialog.FilterIndex == 1) { newGrid.ExportToXls(saveFileDialog.FileName, options); } if (saveFileDialog.FilterIndex == 2) { newGrid.ExportToXlsx(saveFileDialog.FileName, optionsx); } if (saveFileDialog.FilterIndex == 3) { newGrid.ExportToPdf(saveFileDialog.FileName); } if (saveFileDialog.FilterIndex == 4) { newGrid.ExportToRtf(saveFileDialog.FileName); } if (saveFileDialog.FilterIndex == 5) { newGrid.ExportToHtml(saveFileDialog.FileName); } XtraMessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } return 1; } #endregion #region 打印GridControl /// /// 打印GridControl /// /// /// public static int Preview(DevExpress.XtraGrid.GridControl GridControlPub) { PrintingSystem ps = null; DevExpress.XtraPrinting.PrintableComponentLink link = null; ps = new DevExpress.XtraPrinting.PrintingSystem(); link = new DevExpress.XtraPrinting.PrintableComponentLink(ps); ps.Links.Add(link); link.Component = GridControlPub;//这里可以是可打印的部件 string _PrintHeader = "打印数据信息"; PageHeaderFooter phf = link.PageHeaderFooter as PageHeaderFooter; phf.Header.Content.Clear(); phf.Header.Content.AddRange(new string[] { "", _PrintHeader, "" }); phf.Header.Font = new System.Drawing.Font("宋体", 14, System.Drawing.FontStyle.Bold); phf.Header.LineAlignment = BrickAlignment.Center; link.CreateDocument(); //建立文档 ps.PreviewFormEx.Show(); return 1; } #endregion private void gridView1_CustomDrawCell(object sender, RowCellCustomDrawEventArgs e) { if (e.RowHandle == gridView1.FocusedRowHandle) e.Appearance.BackColor = ColorTranslator.FromHtml("#9feb6a"); //Color.SpringGreen; } private void gridMain_Click(object sender, EventArgs e) { } /// /// Gets or sets the adapter object. /// /// The adapter object. public SqlDataAdapter AdapterObj { get; set; } /// /// 说明:获取选中行数据 /// 创建人:龚宇超 /// 创建日期:2019-10-18 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// DataRow[]. public virtual DataRow[] GetViewFocusedDataRows() { int[] rows = gridView.GetSelectedRows(); DataRow[] dataRows = new DataRow[rows.Length]; for (int i = 0; i < rows.Length; i++) { dataRows[i] = gridView.GetDataRow(rows[i]); } return dataRows; } public void ReleaseEvent() { gridView1.RowStyle -= new RowStyleEventHandler(gridView1_RowStyle); } } }