数据表格(DataTable)

一个使用Data属性绑定数据源的简单表格


下面例子中的数据模型

using System;
using System.Collections.Generic;
using System.Linq;
using BulmaRazor.Components;

namespace BulmaRazorServer.Pages.docs.components.datatable
{
    public enum Gender
    {
        Famle,
        Male
    }

    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public Gender Gender { get; set; }
        public DateTime Birthday { get; set; }

        public Person(int id, string name, int age, DateTime birthday, Gender gender)
        {
            Id = id;
            Name = name;
            Age = age;
            Birthday = birthday;
            Gender = gender;
        }

        public Person()
        {
        }


        //表示从后台获取数据
        static List<Person> allData;

        static Person()
        {
            allData = new List<Person>();
            for (int i = 0; i < 1983; i++)
            {
                allData.Add(new Person()
                {
                    Id = i,
                    Name = "name" + i,
                    Birthday = DateTime.Now.AddDays(-i),
                    Age = i + 2,
                    Gender = i % 3 == 0 ? Gender.Famle : Gender.Male
                });
            }
        }

        internal static IEnumerable<Person> GetPageData(string kw, int pageIndex, int pageSize, out int totalCount)
        {
            IEnumerable<Person> list = allData;
            if (!string.IsNullOrEmpty(kw))
            {
                list = allData.Where(x => x.Name.Contains(kw));
            }

            totalCount = list.Count();
            return list.Skip((pageIndex - 1) * pageSize).Take(pageSize);
        }
    }
}
Show Code

基础功能

Id名称年龄性别生日
0name02Famle2024-03-19 20:15
1name13Male2024-03-18 20:15
2name24Male2024-03-17 20:15
3name35Famle2024-03-16 20:15
4name46Male2024-03-15 20:15
5name57Male2024-03-14 20:15
6name68Famle2024-03-13 20:15
7name79Male2024-03-12 20:15
8name810Male2024-03-11 20:15
9name911Famle2024-03-10 20:15

分页逻辑

Id名称年龄性别生日
0name02Famle2024-03-19 20:15
1name13Male2024-03-18 20:15
2name24Male2024-03-17 20:15
3name35Famle2024-03-16 20:15
4name46Male2024-03-15 20:15

自定义列

Id名称自定义头-年龄性别生日空行操作
0name0 自定义列,年龄:2Famle2024-03-19 20:15
1name1 自定义列,年龄:3Male2024-03-18 20:15
2name2 自定义列,年龄:4Male2024-03-17 20:15
3name3 自定义列,年龄:5Famle2024-03-16 20:15
4name4 自定义列,年龄:6Male2024-03-15 20:15

列排

Id 名称 年龄 性别生日
0name02Famle2024-03-19 20:15
1name13Male2024-03-18 20:15
2name24Male2024-03-17 20:15
3name35Famle2024-03-16 20:15
4name46Male2024-03-15 20:15

过滤

Id 名称 年龄性别 生日
0name02Famle2024-03-19 20:15
1name13Male2024-03-18 20:15
2name24Male2024-03-17 20:15
3name35Famle2024-03-16 20:15
4name46Male2024-03-15 20:15

展开行(详细行)

Id名称年龄性别生日
0name02Famle2024-03-19 20:15
1name13Male2024-03-18 20:15
2name24Male2024-03-17 20:15
3name35Famle2024-03-16 20:15
4name46Male2024-03-15 20:15

index列

Id名称年龄性别生日
10name02Famle2024-03-19 20:15
21name13Male2024-03-18 20:15
32name24Male2024-03-17 20:15
43name35Famle2024-03-16 20:15
54name46Male2024-03-15 20:15

单击选中行

Id名称年龄性别生日
0name02Famle2024-03-19 20:15
1name13Male2024-03-18 20:15
2name24Male2024-03-17 20:15
3name35Famle2024-03-16 20:15
4name46Male2024-03-15 20:15

多选行

Id名称年龄性别生日
0name02Famle2024-03-19
1name13Male2024-03-18

文档