using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using DevExpress.XtraGrid.Localization; using DevExpress.XtraGrid.Views.Grid; using DevExpress.XtraGrid.Columns; using Uninpho.DBOperation.Model; using Uninpho.DBOperation.Operation; using DevExpress.XtraEditors; namespace Uninpho.Tools.components.DataManager { public partial class DMGrid : UserControl { List colums = new List(); object dataSource = null; bool Init = false; public GridView gridView { get { return this.gridView1; } } public DMGrid() { InitializeComponent(); //表格汉化 Dictionary gridLocalizer = SetGridLocalizer(); CHGridLocalizer Localizer = new CHGridLocalizer(gridLocalizer); GridLocalizer.Active = Localizer; this.gridControl1.Load += GridControl1_Load; this.gridControl1.DataSourceChanged += GridControl1_DataSourceChanged; } private void GridControl1_DataSourceChanged(object sender, EventArgs e) { int rowCount = this.gridView1.RowCount; } private void GridControl1_Load(object sender, EventArgs e) { this.gridView1.CustomDrawRowIndicator += new RowIndicatorCustomDrawEventHandler(gridView1_CustomDrawRowIndicator); gridView1.OptionsSelection.MultiSelect = true; //注释此行才可以设置MultiSelectMode,否则会被修改回RowSelect //gridView1.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.RowSelect; this.gridView1.OptionsBehavior.Editable = true; if (!this.DesignMode && !this.Init) { Utility.SetTimeout(1000, () => { if (this.InvokeRequired) { this.Invoke(new MethodInvoker(Initialize)); } else { this.Initialize(); } }); } } /// /// 初始化许可列表 /// public void Initialize() { progressPanel1.Visible = true; this.InitializeTable(); this.LoadData(); this.gridView1.RowHeight = 30; this.Init = true; progressPanel1.Visible = false; } /// /// 重置表格 /// public void resetTable() { this.gridControl1.DataSource = dataSource; this.gridView1.BestFitColumns(); } public Dictionary SetGridLocalizer() { Dictionary LocalizedKeyValue = new Dictionary(); LocalizedKeyValue.Add(GridStringId.FindControlFindButton, "模糊查询"); LocalizedKeyValue.Add(GridStringId.FindControlClearButton, "清空"); LocalizedKeyValue.Add(GridStringId.GridGroupPanelText, "拖拽列名到此处进行分组显示"); return LocalizedKeyValue; } void gridView1_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e) { e.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far; if (e.Info.IsRowIndicator && e.RowHandle >= 0) { e.Info.DisplayText = (e.RowHandle + 1).ToString(); } } /// /// 初始化许可表格 /// private void InitializeTable() { try { gridControl1.DataSource = ""; this.gridView1.IndicatorWidth = 30; this.gridView1.Appearance.EvenRow.BackColor = Color.FromArgb(150, 237, 243, 254); this.gridView1.Appearance.OddRow.BackColor = Color.FromArgb(150, 199, 237, 204); this.gridView1.OptionsView.EnableAppearanceEvenRow = true; this.gridView1.OptionsView.EnableAppearanceOddRow = true; this.gridView1.OptionsFilter.AllowFilterEditor = true; this.gridView1.OptionsView.ShowGroupPanel = true; //添加列 List cls = this.GenerateColumns(); foreach (var item in cls) { this.gridView1.Columns.Add(item); } } catch (Exception exception) { //LogManagement.WriteLog(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, exception); } } /// /// 加载数据 /// public void LoadData() { progressPanel1.Visible = true; dataSource = DMControl.GetUnionTable(); this.gridControl1.DataSource = dataSource; this.gridView1.BestFitColumns(); progressPanel1.Visible = false; } public void FilterDate(DateTime start,DateTime end) { List filterDS = new List(); foreach (var item in dataSource as List) { object dt = null; // (item as IDictionary).TryGetValue("jcrq",out dt); (item as IDictionary).TryGetValue("riqi", out dt); if (dt != null) { DateTime riqi = DateTime.Parse(dt.ToString()); if ((start <= riqi) && (riqi <= end)) { filterDS.Add(item); } } } this.gridControl1.DataSource = filterDS; this.gridView1.BestFitColumns(); } private void Meta2Column(List metas) { List fixedColumn = new List { "xlm", "xingbie", "jgjlc", "czm", "dcbh" }; foreach (T_metadata_account item in metas) { bool isExist = false; //判断字段是否存在 foreach (GridColumn cl in colums) { if (cl.FieldName == item.name) { isExist = true; break; } } if (!isExist) { bool isFixed = fixedColumn.Contains(item.name); GridColumn gc = new GridColumn() { Name = item.chname, FieldName = item.name, Caption = item.chname, // Width = 100, Visible = item.visible, Fixed = isFixed ? FixedStyle.Left : FixedStyle.None, Tag = item }; if (item.name == "riqi") { gc.SortMode = DevExpress.XtraGrid.ColumnSortMode.DisplayText; gc.SortOrder = DevExpress.Data.ColumnSortOrder.Ascending; } gc.OptionsColumn.AllowEdit = false; gc.OptionsColumn.ReadOnly = true; colums.Add(gc); } } } /// /// 初始化表格 /// private List GenerateColumns() { List DaoChaMeta = MetaDataCtrl.GetMetaData("t_daocha_account"); List JHFXMeta = MetaDataCtrl.GetMetaData("t_jihefenxi_account"); List LGLMeta = MetaDataCtrl.GetMetaData("t_lunguili_account"); colums = new List(); this.Meta2Column(DaoChaMeta); this.Meta2Column(JHFXMeta); this.Meta2Column(LGLMeta); return colums; } private void repositoryItemHyperLinkEdit1_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e) { } private void repositoryItemHyperLinkEdit1_Click(object sender, EventArgs e) { int[] rowhandles = this.gridView.GetSelectedRows(); int rowhandle = this.gridView.FocusedRowHandle; String yswjm_lgl = this.gridView.GetRowCellDisplayText(rowhandle, "yswjm"); String yswjm_jhfx = this.gridView.GetRowCellDisplayText(rowhandle, "yswjm_jhfx"); if (string.IsNullOrEmpty(yswjm_lgl) && string.IsNullOrEmpty(yswjm_jhfx)) { XtraMessageBox.Show("波形数据为空!", "提示"); return; } else { BXTForm frm = new BXTForm(new List() { string.IsNullOrEmpty(yswjm_lgl)?"0,0":yswjm_lgl }, new List() { string.IsNullOrEmpty(yswjm_jhfx) ? "0,0" : yswjm_jhfx }); frm.StartPosition = FormStartPosition.CenterParent; frm.ShowDialog(this); //FrmAnalyze anaFrm = new FrmAnalyze("波形查看"); //anaFrm.StartPosition = FormStartPosition.CenterParent; //anaFrm.LoadBXZSData(new List() { yswjm_lgl }, new List() { yswjm_jhfx }); //anaFrm.ShowDialog(this); } } private void gridControl1_Click(object sender, EventArgs e) { } } }