ASP.NET Core Blazor中Table表格给列头添加单选框或者图片

示例:

a.razor:

@namespace 空间
@inherits 域名

               @Title1
               

                       ShowPagination="true"
                       FixedHeader="true"
                       IsMultipleSelect="false"
                       ShowLineNo="true"
                       DynamicContext="DataTableDynamicContext"
                       OnQueryAsync="@OnQueryAsync">
               

@code

{

       private RenderFragment ObjectTypeIconHearTemplate => (item) =>
    @           ShowLabel="false"
          LabelPosition="LabelPosition.Right"
          ShowIndicator="false"
          StateChanged="@OnStateChanged" />;

    private RenderFragment ObjectTypeIconColumnTemplate => (item) =>
    @


        @{
            ITableColumn column = item.Column as ITableColumn;
            DataTableDynamicObject obj = item.DataItem as DataTableDynamicObject;
                              ShowLabel="false"
              LabelPosition="LabelPosition.Right"
              ShowIndicator="false"
              OnStateChanged="@((state, v) => OnGetChanged(item, v))" />
            }
       
;

}

a.razor.cs:

partial class a

{

        //省略部分代码

       //在初始化列表中添加

       protected override void InternalInitialize()

      {

           base.InternalInitialize();

          RecordDataTable DataSource=LoadData();

         string[] shownColumns = new string[] { RecordDataColumn.IconTypeCol, "NAME", "CODE", "EMAIL" };
                string[] invisableColumns = new string[] { RecordDataColumn.IndexCol };
                int order = 0;
                DataTableDynamicContext = new DataTableDynamicContext(DataSource, (context, col) =>
                {
                    RecordDataColumn column = (RecordDataColumn)DataSource.Columns[col.GetFieldName()];
                    switch (column.ColumnName)
                    {
                        case RecordDataColumn.IconTypeCol:
                            col.Text = " ";
                            col.Sortable = false;
                            col.Filterable = false;
                            col.HeaderTemplate = ObjectTypeIconHearTemplate;
                            col.Template = ObjectTypeIconColumnTemplate;
                            col.Width = 35;
                            col.Order = order++;
                            break;
                        default:
                            // 配置列表栏位
                            col.Text = column.Text;
                            col.Sortable = false;
                            col.Filterable = false;
                            col.Order = order++;
                            break;
                    }
                }, invisableColumns, shownColumns, null);

      }

    

 private async Task> OnQueryAsync(QueryPageOptions options)
        {
            List arr = new List();
            if (ShouldRefreshInternal())
            {
                // 得到列表数据源,并转换成可绑定到Table组件的集合
                RecordDataTable table = LoadData(SelectNode.Name);
                if (table != null)
                {
                    DataTableDynamicContext.DataTable = table;
                    DataTableDynamicContext.Update();

                    arr.AddRange(DataTableDynamicContext.GetItems().Cast().Skip(options.PageSize * (options.PageIndex - 1)).Take(options.PageSize));
                }
                GetObjectList_ItemCommandEventHandler(arr);
            }
            return await Task.FromResult(new QueryData()
            {
                Items = arr,
                TotalCount = DataTableDynamicContext.DataTable.Rows.Count,
            });
        }

 private void GetObjectList_ItemCommandEventHandler(List arr)
        {
            try
            {
                foreach (DataTableDynamicObject context in arr)
                {
                    string key = context.GetValue(KeyInfo).ToString();
                    if (GetValues.ContainsKey(key)) continue;
                    GetValues.Add(key, false);
                }
            }
            catch (Exception exp)
            {
                _ = ShowException(exp);
            }

        }

}

你可能感兴趣的:(asp.net,1024程序员节,杂谈,学习)