namespace Yw.WinFrmUI { public partial class HydroVisualSearchListCtrl : DevExpress.XtraEditors.XtraUserControl { public HydroVisualSearchListCtrl() { InitializeComponent(); this.layoutControl1.SetupLayoutControl(); this.gridView1.SetNormalView(); this.searchControl1.SetSearchSettings(Search, Recover); } /// /// 水力点击信息事件 /// public event Action HydroClickInfoEvent; /// /// 水力点击视图事件 /// public event Action HydroClickViewEvent; /// /// 水力查询信息事件 /// public event Action> HydroSearchInfoEvent; /// /// 水力查询视图事件 /// public event Action> HydroSearchViewEvent; //所有数据 private List _allList = null; //所有绑定列表 private List _allBindingList = null; /// /// 初始化数据 /// public void InitialData(List allVisualViewModelList) { _allList = allVisualViewModelList; } /// /// 绑定数据 /// public void SetBindingData(string content) { this.searchControl1.EditValue = content; Search(null, null); } //查询 private void Search(object sender, EventArgs e) { var condition = this.searchControl1.Text.Trim(); if (string.IsNullOrEmpty(condition)) { return; } _allBindingList = _allList; _allBindingList = _allBindingList?.Where(x => (!string.IsNullOrEmpty(x.Code) && x.Code.Contains(condition)) || (!string.IsNullOrEmpty(x.Name) && x.Name.Contains(condition)) || (!string.IsNullOrEmpty(x.Catalog) && x.Catalog.Contains(condition)) || (!string.IsNullOrEmpty(x.ModelType) && x.ModelType.Contains(condition)) ).ToList(); if (_allBindingList == null) { _allBindingList = new List(); } this.hydroVisualViewModelBindingSource.DataSource = _allBindingList; this.hydroVisualViewModelBindingSource.ResetBindings(false); this.HydroSearchInfoEvent?.Invoke(_allBindingList.Select(x => x.Vmo).ToList()); this.HydroSearchViewEvent?.Invoke(_allBindingList.ToList()); } //覆盖 private void Recover(object sender, EventArgs e) { _allBindingList = new List(); this.hydroVisualViewModelBindingSource.DataSource = _allBindingList; this.hydroVisualViewModelBindingSource.ResetBindings(false); this.HydroSearchInfoEvent?.Invoke(null); this.HydroSearchViewEvent?.Invoke(null); } //行点击事件 private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e) { var row = this.gridView1.GetRow(e.RowHandle) as HydroVisualViewModel; if (row == null) { return; } this.HydroClickInfoEvent?.Invoke(row.Vmo); this.HydroClickViewEvent?.Invoke(row); } } }