|
@@ -9,17 +9,18 @@ using System.Linq;
|
|
|
using System.Reflection;
|
|
|
using System.Text;
|
|
|
using System.Threading.Tasks;
|
|
|
+using System.Windows.Forms;
|
|
|
|
|
|
namespace PRSServer.Forms
|
|
|
{
|
|
|
class DeletedEntityGrid<T> : DynamicGrid<T>, ISpecificGrid where T : Entity, new()
|
|
|
{
|
|
|
|
|
|
- private Deletion Deletion { get; set; }
|
|
|
+ private CoreTable Table { get; set; }
|
|
|
|
|
|
- public DeletedEntityGrid(Deletion deletion)
|
|
|
+ public DeletedEntityGrid(CoreTable table)
|
|
|
{
|
|
|
- Deletion = deletion;
|
|
|
+ Table = table;
|
|
|
|
|
|
HiddenColumns.Add(x => x.ID);
|
|
|
|
|
@@ -30,20 +31,32 @@ namespace PRSServer.Forms
|
|
|
protected override DynamicGridColumns LoadColumns()
|
|
|
{
|
|
|
var result = base.LoadColumns();
|
|
|
- result.RemoveAll(x =>
|
|
|
+
|
|
|
+ var deletionColumns = DeletionData.DeletionColumns<T>();
|
|
|
+
|
|
|
+ var columns = new DynamicGridColumns();
|
|
|
+ foreach(var column in deletionColumns.GetColumns())
|
|
|
+ {
|
|
|
+ var resultColumn = result.FirstOrDefault(x => x.ColumnName == column.Property);
|
|
|
+ if(resultColumn is not null)
|
|
|
+ {
|
|
|
+ columns.Add(resultColumn);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(columns.Count == 0)
|
|
|
{
|
|
|
- var prop = CoreUtils.GetProperty(typeof(T), x.ColumnName);
|
|
|
- return prop.GetCustomAttribute<DoNotSerialize>() != null && prop.GetCustomAttribute<DoNotPersist>() != null;
|
|
|
- });
|
|
|
- return result;
|
|
|
+ columns.Add<T, Guid>(x => x.ID, 0, "ID", "", Alignment.MiddleLeft);
|
|
|
+ }
|
|
|
+
|
|
|
+ return columns;
|
|
|
}
|
|
|
|
|
|
protected override void Reload(Filters<T> criteria, Columns<T> columns, ref SortOrder<T>? sort, Action<CoreTable?, Exception?> action)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- var table = DbFactory.Provider.QueryDeleted(Deletion, criteria.Combine(), columns, sort);
|
|
|
- action(table, null);
|
|
|
+ action(Table, null);
|
|
|
}
|
|
|
catch(Exception e)
|
|
|
{
|
|
@@ -53,9 +66,7 @@ namespace PRSServer.Forms
|
|
|
|
|
|
protected override T LoadItem(CoreRow row)
|
|
|
{
|
|
|
- var id = row.Get<T, Guid>(x => x.ID);
|
|
|
- var filter = new Filter<T>(x => x.ID).IsEqualTo(id);
|
|
|
- return DbFactory.Provider.QueryDeleted(Deletion, filter, null).Rows.FirstOrDefault()?.ToObject<T>();
|
|
|
+ return Table.Rows[row.Index].ToObject<T>();
|
|
|
}
|
|
|
|
|
|
protected override void DoEdit()
|
|
@@ -67,11 +78,21 @@ namespace PRSServer.Forms
|
|
|
|
|
|
var editor = new DynamicEditorForm(typeof(T));
|
|
|
editor.ReadOnly = true;
|
|
|
+ editor.OnCustomiseColumns += Editor_OnCustomiseColumns;
|
|
|
editor.OnDefineLookups += sender => DefineLookups(sender, Array.Empty<T>());
|
|
|
editor.Items = new BaseObject[] { item };
|
|
|
editor.ShowDialog();
|
|
|
}
|
|
|
|
|
|
+ private DynamicGridColumns Editor_OnCustomiseColumns(object sender, DynamicGridColumns? source)
|
|
|
+ {
|
|
|
+ var columns = new DynamicGridColumns();
|
|
|
+ columns.ExtractColumns(typeof(T));
|
|
|
+ var deletionColumns = DeletionData.DeletionColumns<T>();
|
|
|
+ columns.RemoveAll(x => !deletionColumns.GetColumns().Any(y => y.Property == x.ColumnName));
|
|
|
+ return columns;
|
|
|
+ }
|
|
|
+
|
|
|
public override void SaveItem(T item)
|
|
|
{
|
|
|
// No saving allowed
|