using DevExpress.Xpo; using DevExpress.XtraBars; using DevExpress.XtraEditors.Controls; using Ips.Library.Basic; using Ips.Library.Entity; using Ips.Sps.Emts; using Ips.Sps.IfeScans; using Ips.Sps.Maps; using Ips.Sps.Sats; using Ips.Sps.Tsks; using System.Data; namespace Ips.Sps.DxSigs { public partial class DxSigListCtrl : DevExpress.XtraEditors.XtraUserControl { public DxSigListCtrl() { InitializeComponent(); } public string CtrlCaption { get => txtListCaption.Caption; set => txtListCaption.Caption = value; } private DxSignalType? SigType { get; set; } = null; private bool ShowEditBar { get; set; } = true; private IList SatList { get; set; } private XPBaseCollection sigList { get; set; } private Session _session { get; set; } private string _defaultMainAdjaSatText; private TskAdCard _adCard; private List _adSatList { get { if (_adCard != null) { var adSatIds = _adCard.Channels.SelectMany(m => m.GetSatIds()).ToList(); var adSatList = SatList.Where(m => adSatIds.Contains(m.Oid)).ToList(); return adSatList; } return null; } } private void grdSigList_Load(object sender, EventArgs e) { } public void SetSigProperties(DxSignalType? sigType, bool showEditBar, IList sats) { SigType = sigType; ShowEditBar = showEditBar; SatList = sats; InitCtrl(); } public void SetDataSource(XPBaseCollection sigList) { _session = sigList.Session; this.sigList = sigList; bsDxSigList.DataSource = sigList; InitCtrl(); } public void SetAdCardInfo(TskAdCard adCard) { _adCard = adCard; } public void SetDefaultSatText(string adjaSatsText) { adjaSatEdit.NullText = _defaultMainAdjaSatText = adjaSatsText; } private void InitCtrl() { barSigEdit.Visible = ShowEditBar; gvSigList.OptionsBehavior.Editable = ShowEditBar; bsSatList.DataSource = SatList; colOid.Visible = false; colSigType.Visible = true; colRemark.Visible = !ShowEditBar; colSigFreqText.Visible = false; } private void btnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { gvSigList.AddNewRow(); } private void btnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var selectRows = gvSigList.GetSelectedRows(); if (selectRows.Length > 0) { gvSigList.DeleteSelectedRows(); } else if (gvSigList.FocusedRowHandle >= 0) { gvSigList.DeleteRow(gvSigList.FocusedRowHandle); } } private void gvSigList_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e) { if (SigType.HasValue) { gvSigList.SetRowCellValue(e.RowHandle, colSigType, SigType); } if (_adCard != null) { var adSatIds = _adCard.Channels.SelectMany(m => m.GetSatIds()).ToList(); var adSatList = SatList.Where(m => adSatIds.Contains(m.Oid)).ToList(); if (adSatList.IsNotNullOrEmpty()) { adjaSatEdit.DataSource = adSatList; } } } private void gvSigList_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e) { if (e.Column == colAdjaSatIds) { if (e.DisplayText.IsNullOrWhitespace()) { e.DisplayText = _defaultMainAdjaSatText.IfNullOrWhitespace("自动匹配"); } } } } }