using DevExpress.XtraEditors; using System.Collections.Generic; using System.ComponentModel; using System.Windows.Forms; namespace TProduct.WinFrmUI.TestBench { public partial class WorkBenchInstrumentShunPortRS485Ctrl : DevExpress.XtraEditors.XtraUserControl { public WorkBenchInstrumentShunPortRS485Ctrl() { InitializeComponent(); this.gridView1.SetNormalEditView(); this.gridView1.SetGridMianViewColor(); //foreach (TProduct.RS485.eInstrumentType suit in Enum.GetValues(typeof(TProduct.RS485.eInstrumentType))) //{ // this.repositoryItemImageComboBox1.Items.Add(suit.ToString(),(int)suit,-1); //} this.repositoryItemImageComboBox1.Items.Add("青智(型号:8920)", (int)TProduct.Link.Shun.eRs485InstrumentType.青智_8920_3x, -1); this.repositoryItemImageComboBox1.Items.Add("青智(型号:8902F2)", (int)TProduct.Link.Shun.eRs485InstrumentType.青智_8902F2_3x, -1); this.repositoryItemImageComboBox1.Items.Add("安科瑞(三相)PZ系列 单功率", (int)TProduct.Link.Shun.eRs485InstrumentType.安科瑞_PZ_3x_P, -1); this.repositoryItemImageComboBox1.Items.Add("安科瑞(三相)PZ系列 功率电压电流", (int)TProduct.Link.Shun.eRs485InstrumentType.安科瑞_PZ_3x_PUI, -1); GetPortPortRS485().ForEach(x => repositoryItemImageComboBox2.Items.Add(x, x, -1)); } List GetPortPortRS485() { return new List(3) { "端口一", "端口二", "端口三" }; } private class CurrentViewModel : Model.WorkBenchInstrumentShunPortRS485 { public CurrentViewModel() { } public CurrentViewModel(Model.WorkBenchInstrumentShunPortRS485 rhs) : base(rhs) { } public string PortName { get; set; } } private List _bindList = null; private Model.WorkBenchBase _bentch = null; /// /// 添加 /// public void SetBindingData(Model.WorkBenchBase paras) { if (paras == null) return; _bentch = paras; _bindList = new List(); _bindList.Add(new CurrentViewModel() { PortName = "端口一", }); this.bindingSource1.DataSource = _bindList; this.bindingSource1.ResetBindings(false); } /// /// 编辑 /// public void SetBindingData(Model.WorkBenchBase paras, Model.WorkBenchInstrumentShun instrument) { if (paras == null) return; if (instrument == null) return; _bentch = paras; _bindList = new List(); var list = new BLL.WorkBenchInstrumentShunPortRS485().GetByLinkID(instrument.ID); if (list == null) list = new List(); list?.ForEach(x => _bindList.Add(new CurrentViewModel(x))); this.bindingSource1.DataSource = _bindList; this.bindingSource1.ResetBindings(false); } /// /// 获取数据 /// public List GetData() { if (!Verify()) return null; var list = new List(); foreach (var m in _bindList) { if (m.InstrumentType > 0 && m.InstrumentAddress >= 0) { list.Add(new Model.WorkBenchInstrumentShunPortRS485(m)); } } return list; } //验证 private bool Verify() { //if (_bindList.Count < 1) //{ // XtraMessageBox.Show("存在数字信号未设置数据!"); // return false; //} //var model = _bindList.Find(x => string.IsNullOrEmpty(x.PortName)); //if (model != null) //{ // XtraMessageBox.Show("存在未选择端口!"); // return false; //} //var portNames = _bindList.Where(x => !string.IsNullOrEmpty(x.PortName)).Select(x => x.PortName); //if (portNames.Count() != portNames.Distinct().Count()) //{ // XtraMessageBox.Show("端口名存在重复!"); // return false; //} //var model = _bindList.Find(x => x.IsCheck == false); //if (model != null) //{ // XtraMessageBox.Show("存在测点未设置!"); // return false; //} return true; } #region 按钮事件 //添加按钮 private void barButAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_bindList == null) return; if (_bindList.Count == 3) { XtraMessageBox.Show("当前仅开放3个端口!"); return; } var vm = new CurrentViewModel(); if (_bindList.Count == 0) vm.PortName = "端口1"; _bindList.Add(vm); this.bindingSource1.ResetBindings(false); } //删除按钮 private void barButDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.Delete(); } //删除按钮 private void repositoryItemButtonEdit1_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e) { this.Delete(); } //删除 private void Delete() { if (_bindList == null) return; var row = this.gridView1.GetCurrentViewModel(_bindList); if (row == null) return; if (row.ID > 0) { XtraMessageBox.Show("该数据已保存,不允许删除!"); return; } DialogResult result = XtraMessageBox.Show("是否删除此对象?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (result != DialogResult.Yes) return; _bindList.Remove(row); this.bindingSource1.ResetBindings(false); } #endregion #region GridView事件 private void repositoryItemImageComboBox1_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e) { //if (_bentch == null) //{ // e.Cancel = true; // return; //} // var instrumentBase = RS485.InstrumentHelper.GetInstrumentBase((RS485.eInstrumentType)e.NewValue); } private void gridView1_CellValueChanging(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) { //if (this.colInstrumentType == e.Column) //{ // //var row = this.gridView1.GetCurrentViewModel(_bindList); // //if (row == null) // // return; // //var ids = new List(); // //var instrumentBase = RS485.InstrumentHelper.GetInstrumentBase((RS485.eInstrumentType)e.Value); // //var list = new List(); // //foreach (var item in instrumentBase.GetMonitorTypeFlag()) // //{ // // var testPoint = _allMonitorPoints.Find(x => x.Name == item.ToString()); // // if (testPoint != null) // // ids.Add(testPoint.ID); // //} // //row.PointIds = ids; //} } //显示某些单元格是否可以编辑 private void gridView1_ShowingEditor(object sender, CancelEventArgs e) { //var row = this.gridView1.GetCurrentViewModel(_bindList); //if (row == null) // return; //if (this.gridView1.FocusedColumn == this.colInstrumentType) //{ // if (row.ID > 0) // { // e.Cancel = true; // } //} } #endregion } }