ASP.NET Core Blazor中table表格的用法

示例:

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);
        }

}

}

效果图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值