improvements

This commit is contained in:
Loretta 2025-11-21 16:28:49 +01:00
parent 44103b9613
commit baaceacdd3
1 changed files with 32 additions and 10 deletions

View File

@ -19,7 +19,7 @@ public interface IMgGridBase : IGrid
} }
public abstract class MgGridBase<TSignalRDataSource, TDataItem, TId, TLoggerClient> : DxGrid, IMgGridBase public abstract class MgGridBase<TSignalRDataSource, TDataItem, TId, TLoggerClient> : DxGrid, IMgGridBase
where TSignalRDataSource : AcSignalRDataSource<TDataItem, TId, List<TDataItem>> where TSignalRDataSource : AcSignalRDataSource<TDataItem, TId, AcObservableCollection<TDataItem>>
where TDataItem : class, IId<TId> where TDataItem : class, IId<TId>
where TId : struct where TId : struct
where TLoggerClient : AcLoggerBase where TLoggerClient : AcLoggerBase
@ -31,7 +31,7 @@ public abstract class MgGridBase<TSignalRDataSource, TDataItem, TId, TLoggerClie
protected bool IsFirstInitializeParameterCore; protected bool IsFirstInitializeParameterCore;
private TSignalRDataSource? _dataSource = null!; private TSignalRDataSource? _dataSource = null!;
private List<TDataItem>? _dataSourceParam = []; private AcObservableCollection<TDataItem>? _dataSourceParam = [];
private string _gridLogName; private string _gridLogName;
public MgGridBase() : base() public MgGridBase() : base()
@ -115,13 +115,31 @@ public abstract class MgGridBase<TSignalRDataSource, TDataItem, TId, TLoggerClie
} }
set set
{ {
_dataSourceParam = value as List<TDataItem>; _dataSourceParam = value as AcObservableCollection<TDataItem>;
if (_dataSource != null) // && _dataSourceParam is List<TDataItem> workingReferenceList) if (_dataSource != null) // && _dataSourceParam is List<TDataItem> workingReferenceList)
_dataSource.SetWorkingReferenceList(_dataSourceParam); {
SetWorkingReferenceList(_dataSourceParam);
}
} }
} }
private void SetWorkingReferenceList(AcObservableCollection<TDataItem>? referenceList)
{
_dataSource?.SetWorkingReferenceList(referenceList);
SetGridData(referenceList);
}
public void SetGridData(object? data)
{
if (ReferenceEquals(Data, data)) return;
BeginUpdate();
Data = data;
EndUpdate();
}
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
if (Logger == null) if (Logger == null)
@ -139,8 +157,8 @@ public abstract class MgGridBase<TSignalRDataSource, TDataItem, TId, TLoggerClie
_dataSource.FilterText = FilterText; _dataSource.FilterText = FilterText;
//_dataSource = new SignalRDataSource<TDataItem>(SignalRClient, crudTags, ContextIds) { FilterText = FilterText }; //_dataSource = new SignalRDataSource<TDataItem>(SignalRClient, crudTags, ContextIds) { FilterText = FilterText };
Data = _dataSource; SetGridData(_dataSource.GetReferenceInnerList());
_dataSource.OnDataSourceLoaded += OnDataSourceLoaded; _dataSource.OnDataSourceLoaded += OnDataSourceLoaded;
_dataSource.OnDataSourceItemChanged += OnDataSourceItemChanged; _dataSource.OnDataSourceItemChanged += OnDataSourceItemChanged;
@ -168,7 +186,11 @@ public abstract class MgGridBase<TSignalRDataSource, TDataItem, TId, TLoggerClie
{ {
Logger.Debug($"{_gridLogName} OnDataSourceLoaded; Count: {_dataSource?.Count}"); Logger.Debug($"{_gridLogName} OnDataSourceLoaded; Count: {_dataSource?.Count}");
Reload(); //if(_dataSourceParam.GetType() == typeof()AcObservableCollection<TDataItem>)
SetGridData(_dataSource!.GetReferenceInnerList());
//else Reload();
//_dataSource.LoadItem(_dataSource.First().Id).Forget(); //_dataSource.LoadItem(_dataSource.First().Id).Forget();
return OnDataSourceChanged.InvokeAsync(_dataSource); return OnDataSourceChanged.InvokeAsync(_dataSource);
} }
@ -195,7 +217,7 @@ public abstract class MgGridBase<TSignalRDataSource, TDataItem, TId, TLoggerClie
} }
else if (dataItem.Id is int) else if (dataItem.Id is int)
{ {
var newId = -1 * (new Random().Next()); var newId = -1 * AcDomain.NextUniqueInt32;
dataItem.Id = (TId)(_typeConverterId.ConvertTo(newId, typeof(TId)))!; dataItem.Id = (TId)(_typeConverterId.ConvertTo(newId, typeof(TId)))!;
} }
} }
@ -302,8 +324,8 @@ public abstract class MgGridBase<TSignalRDataSource, TDataItem, TId, TLoggerClie
if (e.IsNew) if (e.IsNew)
{ {
if (EditNewRowPosition is GridEditNewRowPosition.FixedOnTop or GridEditNewRowPosition.Top) await InsertDataItemAsync(0, dataItem); if (EditNewRowPosition is GridEditNewRowPosition.FixedOnTop or GridEditNewRowPosition.Top) await AddDataItemAsync(dataItem);
else await AddDataItemAsync(dataItem); else await InsertDataItemAsync(0, dataItem);
} }
else await UpdateDataItemAsync(dataItem); else await UpdateDataItemAsync(dataItem);