示例:
BorrowAnalysis.razor
@namespace 空间名
@inherits 域名
@if (Initialized)
{
<div class="page-main w-100 d-flex flex-column bg-white h-100">
<div class="flex-grow-1 d-flex flex-column p-1 mb-2">
<Table @ref="TableRef" class="flex-fill" style="height:100px" TItem="DataTableDynamicObject" IsBordered="true" IsStriped="true" ShowToolbar="false"
ShowPagination="true"
FixedHeader="true"
IsMultipleSelect="false"
ShowLineNo="true"
DynamicContext="DataTableDynamicContext"
OnQueryAsync="@OnQueryAsync">
</Table>
</div>
<div class="modal-footer">
<Button class="me-2" style="width:95px;"
Size="BlzComponentSize.Medium"
Color="BlzComponentColor.Danger"
Icon="bi bi-x-octagon m-1"
Text="@(PageLocalizer.GetLocalizedString("Text","Close"))"
OnClick="() => Close(DialogResult.Close)" />
</div>
</div>
}
BorrowAnalysis.razor.cs
namespace 命名空间
{
//点击webaction弹出此页面
[PopupCode("BorrowAnalysis")]
partial class BorrowAnalysis
{
private string Title;
private Table<DataTableDynamicObject> TableRef;
//config目录下名称为BorrowAnalysis的xml文件里边有该页面相关列、按钮等中英文对应
public BorrowAnalysis() => PageContext = "BorrowAnalysis";
[NotNull]
private DataTableDynamicContext? DataTableDynamicContext { get; set; }
protected override void InternalInitialize()
{
base.InternalInitialize();
Title = GetLocalize("BorrowListHeader");
string[] shownColumns = new string[] { "CODE", "NAME", "PLMREVISION", "PLMSTATEID", "PLMUPDATOR", "PLMELASTUPDATE", "PRODUCTID" };
string[] invisableColumns = new string[] { RecordDataColumn.IconTypeCol, RecordDataColumn.IndexCol };
RecordDataTable DataSource = LoadData();
int order = 0;
DataTableDynamicContext = new DataTableDynamicContext(DataSource, (context, col) =>
{
RecordDataColumn column = (RecordDataColumn)DataSource.Columns[col.GetFieldName()];
switch (column.ColumnName)
{
default:
// 配置列表栏位
col.Text = column.Text;
col.Sortable = false;
col.Filterable = false;
col.Order = order++;
break;
}
}, invisableColumns, shownColumns, null);
}
}
private async Task<QueryData<DataTableDynamicObject>> OnQueryAsync(QueryPageOptions options)
{
List<DataTableDynamicObject> arr = new List<DataTableDynamicObject>();
if (ShouldRefreshInternal())
{
// 得到列表数据源,并转换成可绑定到Table组件的集合
RecordDataTable table = LoadData();
if (table != null)
{
DataTableDynamicContext.DataTable = table;
DataTableDynamicContext.Update();
arr.AddRange(DataTableDynamicContext.GetItems().Cast<DataTableDynamicObject>().Skip(options.PageSize * (options.PageIndex - 1)).Take(options.PageSize));
}
}
return await Task.FromResult(new QueryData<DataTableDynamicObject>()
{
Items = arr,
TotalCount = DataTableDynamicContext.DataTable.Rows.Count,
});
}
private TEntity GetEntities()
{
string objectID = Parameters["HostObjectID"].ToString();
TEntity e = null;
try
{
e = WebUtil.GetEntityByEID(objectID, "", UserSession);
}
catch { }
return e;
}
private RecordDataTable LoadData()
{
TEntity e1= GetEntities();
int iPageCount = -1;
TEntity[] entities1 = PagedProductAnalysis.GetBorrowAnalysisResult(UserSession, e1.NameID, e1.ObjectID, ref iPageCount, 0, 0);
EntityType part = DataModel.GetEntityType("PART");
FieldMetadata[] m = part.GetMetadata(this.CurrentUserLanguage);
RecordDataTable recordTable = new RecordDataTable();
if (entities1 != null)
{
RecordSet rs1 = new RecordSet();
rs1.Metadata = m;
List<Record> records = new List<Record>();
foreach (TEntity e in entities1)
{
if (e == null)
{
continue;
}
RecordSet r = e.ToRecordSetWithFM(m);
records.Add(r.Items[0]);
}
rs1.Items = records.ToArray();
RecordSet rs = DefaultDisplayFormat.BuildBorrowedPartDisplayRecordSet(rs1);
if (rs != null)
{
FormatString(rs);
recordTable = new RecordDataTable(rs);
recordTable.DataBind();
recordTable.AcceptChanges();
}
else
{
RecordSet rd = new RecordSet();
rd.Metadata = m;
rd.Items = new Record[0];
rs = DefaultDisplayFormat.BuildDefaultDisplayRecordSet(rd);
recordTable = new RecordDataTable(rs);
recordTable.DataBind();
recordTable.AcceptChanges();
}
return recordTable;
}
return recordTable;
}
private void FormatString(RecordSet rs)
{
foreach (Record r in rs.Items)
{
for (int i = 0; i < rs.Metadata.Length; i++)
{
FieldMetadata fm = rs.Metadata[i];
if (fm.DataType == typeof(DateTime).ToString())
r.Fields[i] = Convert.ToDateTime(r.Fields[i]).ToString("yyyy-MM-dd HH:mm:ss");
}
}
}
private string GetLocalize(string key)
{
return new PageLocalizer(PageContext, CurrentUserLanguage).GetLocalizedString(PageContext, "", key);
}
}
}
效果图: