using MeterVision.Config; using MeterVision.db; using MeterVision.model; using MeterVision.Util; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace MeterVision.Station { /// /// UCVpsGrid.xaml 的交互逻辑 /// public partial class UCVpsGrid : UserControl, INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } public ObservableCollection StationItemList { get; set; } public event Action OnItemChanged; private VPatchStation _selectedStationItem; public VPatchStation SelectedStationItem { get => _selectedStationItem; set { if(_selectedStationItem != value) { _selectedStationItem = value; OnPropertyChanged(nameof(SelectedStationItem)); OnItemChanged?.Invoke(value); } } } //要查找的站点ID private string _findStationId; public string FindStationId { get => _findStationId; private set { if (_findStationId != value) { _findStationId = value; } } } private string _patchId; public string PatchId { get => _patchId; private set { if (_patchId != value) { _patchId = value; } } } public void ChangeFind(string stationId, string patchId) { bool blChangeFindStationId = false; bool blChangePatchId = false; if (stationId != _findStationId) { FindStationId = stationId; blChangeFindStationId = true; } if (patchId != _patchId) { PatchId = patchId; blChangePatchId = true; } if (blChangeFindStationId || blChangePatchId) { StationPage.InitDefaulValue(); LoadStationItemList(true); } } public CfginiItem mConfigItem { get; set; } public PageModel StationPage { get; set; } private int _totalRecords; public int TotalRecords { get => _totalRecords; set { if (_totalRecords != value) { _totalRecords = value; OnPropertyChanged(nameof(TotalRecords)); } } } public UCVpsGrid() { InitializeComponent(); StationItemList = new ObservableCollection(); dgStation.ItemsSource = StationItemList; mConfigItem = CfginiItem.GetConfigItem(); StationPage = new PageModel { PageSize = mConfigItem.PageSize2, //mConfigItem.PatchPageSize, PageNumber = 1 }; //mConfigItem.OnPatchPageSizeChanged += MConfigItem_OnPatchPageSizeChanged; mConfigItem.OnPageSize2Changed += MConfigItem_OnPageSize2Changed; this.DataContext = this; } private void MConfigItem_OnPageSize2Changed(int pageSize2) { //throw new NotImplementedException(); StationPage.InitDefaulValue(pageSize2); LoadStationItemList(true); } //private void MConfigItem_OnPatchPageSizeChanged(int pageSize) //{ // StationPage.InitDefaulValue(pageSize); // LoadStationItemList(true); //} private async void LoadStationItemList(bool scrollTop) { StationItemList.Clear(); if (FindStationId == null) { return; } try { var result = await Task.Run(() => { return DBPatch.GetPagedPatchStations(StationPage.PageNumber,StationPage.PageSize,FindStationId,PatchId); }); //更新分页信息 TotalRecords = result.Item1; StationPage.PageCount = result.Item2; List stationList = result.Item3; //在主线中更新数据 Application.Current.Dispatcher.Invoke(() => { int index = 0; foreach (VPatchStation station in stationList) { index++; //StationItem item = new StationItem(station); //item.Index = index + ((StationPage.PageNumber - 1) * StationPage.PageSize); //StationItemList.Add(item); station.Index = index + ((StationPage.PageNumber - 1) * StationPage.PageSize); StationItemList.Add(station); } SelectedStationItem = null; if (StationItemList.Count > 0 && scrollTop) { dgStation.ScrollIntoView(dgStation.Items[0]); } }); } catch (Exception ex) { MessageBox.Show(Application.Current.MainWindow, $"加载数据是发生错误:{ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } if(StationItemList.Count > 0) { SelectedStationItem = StationItemList[0]; } else { SelectedStationItem = null; } } public void NextPage() { if (StationPage.PageNumber < StationPage.PageCount) { StationPage.PageNumber += 1; LoadStationItemList(true); } } public void PrePage() { if (StationPage.PageNumber > 1) { StationPage.PageNumber -= 1; LoadStationItemList(true); } } public void FirstPage() { if (StationPage.PageNumber > 1) { StationPage.PageNumber = 1; LoadStationItemList(true); } } public void LastPage() { if (StationPage.PageNumber < StationPage.PageCount) { StationPage.PageNumber = StationPage.PageCount; LoadStationItemList(true); } } public void SpeciPage(int pageNumber) { if (pageNumber != StationPage.PageNumber && pageNumber > 0 && pageNumber <= StationPage.PageCount) { StationPage.PageNumber = pageNumber; LoadStationItemList(true); } } public async void RefreshItems() { try { var result = await Task.Run(() => { return DBPatch.GetPagedPatchStations(StationPage.PageNumber, StationPage.PageSize, FindStationId, PatchId); }); //更新分页信息 //TotalRecords = result.Item1; //StationPage.PageCount = result.Item2; List stationList = result.Item3; foreach(var stationItem in StationItemList) { int index = stationItem.Index; var findItem = stationList.Find((a) => a.StationId == stationItem.StationId); if(findItem!= null) { ObjectHelper.CopyMatchingFields(findItem, stationItem); stationItem.Index = index; } } } catch (Exception ex) { MessageBox.Show(Application.Current.MainWindow, $"加载数据是发生错误:{ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } } //--------------------------------------------------------------------- } }