using System; using System.Collections.Generic; using System.Data; using System.Text; using System.Windows.Forms; using DevExpress.Utils.DirectXPaint; using DevExpress.XtraEditors; using DevExpress.XtraEditors.Controls; using DevExpress.XtraGrid.Columns; using Gs.DevApp.ToolBox; using Newtonsoft.Json; namespace Gs.DevApp.UserControl { public partial class ShowFilter : XtraForm { private readonly GridColumnCollection _columns; public ShowFilter(GridColumnCollection Columns, List list = null) { FilterList = list; _columns = Columns; InitializeComponent(); repositoryItemComboBox1.TextEditStyle = TextEditStyles.DisableTextEditor; repositoryItemComboBox1.SelectedIndexChanged += RepositoryItemComboBox1_SelectedIndexChanged; repositoryItemComboBox1.ParseEditValue += RepositoryItemComboBox1_ParseEditValue; repositoryItemComboBox2.TextEditStyle = TextEditStyles.DisableTextEditor; repositoryItemComboBox2.SelectedIndexChanged += RepositoryItemComboBox2_SelectedIndexChanged; repositoryItemComboBox2.ParseEditValue += RepositoryItemComboBox2_ParseEditValue; gridView1.OptionsFind.ShowSearchNavButtons = false; // this.gridView1.OptionsView.ShowAutoFilterRow = true; gridView1.OptionsView.ShowGroupPanel = false; btnEsc.Click += BtnEsc_Click; btnQuery.Click += BtnQuery_Click; getPageList(); } /// /// 查询集合 /// public List FilterList { get; set; } /// /// 回调事件 /// public event EventHandler UpdateParent; private void BtnQuery_Click(object sender, EventArgs e) { gridView1.CloseEditor(); gridView1.UpdateCurrentRow(); var sbWhere = new StringBuilder(); var list = new List(); for (var i = 0; i < gridView1.DataRowCount; i++) { if (string.IsNullOrEmpty(gridView1.GetRowCellValue(i, "field") .ToString()) || string.IsNullOrEmpty(gridView1 .GetRowCellValue(i, "fieldWhere").ToString()) || string.IsNullOrEmpty(gridView1 .GetRowCellValue(i, "fieldValue").ToString()) ) continue; string _fieId, _fileIdDec; (_fieId, _fileIdDec) = _getFiled(gridView1.GetRowCellValue(i, "field").ToString()); string _fileWhere, _fileWhereDec; (_fileWhere, _fileWhereDec) = _getFiled(gridView1 .GetRowCellValue(i, "fieldWhere").ToString()); var _fieldValue = gridView1.GetRowCellValue(i, "fieldValue") .ToString(); if (_fileWhere.Contains("like")) { _fileWhere = " like "; _fieldValue = "%" + _fieldValue + "%"; } list.Add(new FilterEntity(_fieId, _fileIdDec, _fileWhere, _fileWhereDec, _fieldValue)); } UpdateParent?.Invoke(this, new UpdateParentEventArgs { FilterList = list }); Close(); } /// /// private void getPageList() { foreach (GridColumn col in _columns) if (col.Tag != null && col.Tag.ToString().StartsWith("query")) { var item = new CboItemEntity(); item.Text = col.Tag.ToString().Replace("query_", "") + "(" + col.Caption + ")"; //item.Value = col.FieldName; item.Value = col.Tag.ToString().Replace("query_", ""); repositoryItemComboBox1.Items.Add(item); } var d2 = new Dictionary(); d2.Add(">", "大于"); d2.Add("<", "小于"); d2.Add("=", "等于"); d2.Add("<>", "不等于"); d2.Add("like", "包含"); foreach (var kvp in d2) { var item = new CboItemEntity(); item.Text = kvp.Key + "(" + kvp.Value + ")"; item.Value = kvp.Key; repositoryItemComboBox2.Items.Add(item); } try { var dt = new DataTable(); dt.Columns.Add("field", typeof(string)); dt.Columns.Add("fieldWhere", typeof(string)); dt.Columns.Add("fieldValue", typeof(string)); foreach (var _sql in FilterList) { var dr = dt.NewRow(); dr["field"] = _sql.fileId + "(" + _sql.fileIdDec; dr["fieldWhere"] = _sql.fileOper + "(" + _sql.fileOperDec; dr["fieldValue"] = _sql.fileValue.Replace("%", ""); dt.Rows.Add(dr); } gcMain.BindingContext = new BindingContext(); gcMain.DataSource = dt; gcMain.ForceInitialize(); } catch (Exception ex) { MsgHelper.Warning("提示:" + ex.Message); } } private (string, string) _getFiled(string _field) { return (_field.Split('(')[0], _field.Split('(')[1]); } private void BtnEsc_Click(object sender, EventArgs e) { Close(); } private void RepositoryItemComboBox2_ParseEditValue(object sender, ConvertEditValueEventArgs e) { if (e.Value != null) { e.Value = e.Value.ToString(); e.Handled = true; } } private void RepositoryItemComboBox2_SelectedIndexChanged(object sender, EventArgs e) { } private void RepositoryItemComboBox1_ParseEditValue(object sender, ConvertEditValueEventArgs e) { if (e.Value != null) { e.Value = e.Value.ToString(); e.Handled = true; } } private void RepositoryItemComboBox1_SelectedIndexChanged(object sender, EventArgs e) { } /// /// 移出一行 /// /// /// private void repositoryItemButtonEdit1_ButtonClick(object sender, ButtonPressedEventArgs e) { gridView1.CloseEditor(); gridView1.UpdateCurrentRow(); var rowhandle = gridView1.FocusedRowHandle; if (rowhandle < 0) return; if (e.Button.Index == 0) { var dr = gridView1.GetDataRow(rowhandle); gridView1.DeleteRow(rowhandle); return; } } } }