当前位置:首页 > 科技  > 软件

.NET中使用BootstrapBlazor组件库Table实操篇

来源: 责编: 时间:2024-02-05 17:20:46 353观看
导读前言Table表格在后台管理应用中使用的是相当频繁的,因此找一个功能齐全的前端框架对于我们而言是非常必要的,因为封装完善的前端框架能够大大提升我们的工作对接效率。今天我们主要来讲解一下在.NET中使用BootstrapBlaz

前言

Table表格在后台管理应用中使用的是相当频繁的,因此找一个功能齐全的前端框架对于我们而言是非常必要的,因为封装完善的前端框架能够大大提升我们的工作对接效率。今天我们主要来讲解一下在.NET中使用BootstrapBlazor组件库的Table表格组件(本章使用的数据都是程序自动生成的模拟数据,不需要与数据库打交道)。IGu28资讯网——每日最新资讯28at.com

图片图片IGu28资讯网——每日最新资讯28at.com

BootstrapBlazor介绍

图片图片IGu28资讯网——每日最新资讯28at.com

  • 使用文档:https://www.blazor.zone/introduction
  • Gitee项目地址:https://gitee.com/LongbowEnterprise/BootstrapBlazor

BootstrapBlazor是一套基于 Bootstrap 和 Blazor 的企业级组件库,可以认为是 Bootstrap 项目的 Blazor 版实现。基于 Bootstrap 样式库精心打造,并且额外增加了 100 多种常用的组件,为您快速开发项目带来非一般的感觉(喜欢Bootstrap风格的同学推荐使用)。IGu28资讯网——每日最新资讯28at.com

.NET BootstrapBlazor UI组件库引入

BootstrapBlazor Table使用前提条件!IGu28资讯网——每日最新资讯28at.com

https://mp.weixin.qq.com/s/UIeKSqym8ibLRvDwra8awwIGu28资讯网——每日最新资讯28at.com

首先定义StudentViewModel

public class StudentViewModel    {        /// <summary>        /// StudentID        /// </summary>        public int StudentID { get; set; }        /// <summary>        /// 班级名称        /// </summary>        public string ClassName { get; set; }        /// <summary>        /// 学生姓名        /// </summary>        public string Name { get; set; }        /// <summary>        /// 学生年龄        /// </summary>        public int Age { get; set; }        /// <summary>        /// 学生性别        /// </summary>        public string Gender { get; set; }    }

.NET后台模拟数据和增删改查方法封装

using BootstrapBlazor.Components;using WebUI.Model;namespace WebUI.Pages{    public partial class StudentExample    {        private static readonly Random random = new Random();        public static List<StudentViewModel>? StudentInfoList;        public StudentExample()        {            StudentInfoList = GenerateUserInfos();        }        /// <summary>        /// 模拟数据库用户信息生成        /// </summary>        /// <returns></returns>        public static List<StudentViewModel> GenerateUserInfos()        {            return new List<StudentViewModel>(Enumerable.Range(1, 200).Select(i => new StudentViewModel()            {                StudentID = i,                ClassName = $"时光 {i} 班",                Name = GenerateRandomName(),                Age = random.Next(20, 50),                Gender = GenerateRandomGender()            }));        }        /// <summary>        /// 生成随机性别        /// </summary>        /// <returns></returns>        public static string GenerateRandomGender()        {            string[] genders = { "男", "女" };            return genders[random.Next(genders.Length)];        }        /// <summary>        /// 生成随机姓名        /// </summary>        /// <returns></returns>        public static string GenerateRandomName()        {            string[] surnames = { "张", "王", "李", "赵", "刘" };            string[] names = { "明", "红", "强", "丽", "军" };            string surname = surnames[random.Next(surnames.Length)];            string name = names[random.Next(names.Length)];            return surname + name;        }        /// <summary>        /// 数据查询        /// </summary>        /// <param name="options">options</param>        /// <returns></returns>        private Task<QueryData<StudentViewModel>> OnQueryAsync(QueryPageOptions options)        {            List<StudentViewModel> studentInfoData = StudentInfoList;            // 数据模糊过滤筛选            if (!string.IsNullOrWhiteSpace(options.SearchText))            {                studentInfoData = studentInfoData.Where(x => x.Name.Contains(options.SearchText)).ToList();            }            return Task.FromResult(new QueryData<StudentViewModel>()            {                Items = studentInfoData.Skip((options.PageIndex - 1) * options.PageItems).Take(options.PageItems).ToList(),                TotalCount = studentInfoData.Count()            });        }        /// <summary>        /// 模拟数据增加和修改操作        /// </summary>        /// <param name="studentInfo">studentInfo</param>        /// <param name="changedType">changedType</param>        /// <returns></returns>        public Task<bool> OnSaveAsync(StudentViewModel studentInfo, ItemChangedType changedType)        {            if (changedType.ToString() == "Update")            {                var queryInfo = StudentInfoList.FirstOrDefault(x => x.StudentID == studentInfo.StudentID);                if (queryInfo != null)                {                    queryInfo.Age = studentInfo.Age;                    queryInfo.ClassName = studentInfo.ClassName;                    queryInfo.Name = studentInfo.Name;                    queryInfo.Gender = studentInfo.Gender;                }            }            else if (changedType.ToString() == "Add")            {                StudentInfoList.Add(studentInfo);            }            return Task.FromResult(true);        }        /// <summary>        /// 数据删除        /// </summary>        /// <param name="items">items</param>        /// <returns></returns>        private Task<bool> OnDeleteAsync(IEnumerable<StudentViewModel> items)        {            items.ToList().ForEach(i => StudentInfoList.Remove(i));            return Task.FromResult(true);        }    }}

一行代码快速生成Table表格

<Table TItem="StudentViewModel" AutoGenerateColumns="true" Items="StudentInfoList"></Table>

图片图片IGu28资讯网——每日最新资讯28at.com

显示Table工具栏

<Table TItem="StudentViewModel" AutoGenerateColumns="true" Items="StudentInfoList" ShowToolbar="true"></Table>

图片图片IGu28资讯网——每日最新资讯28at.com

显示Table多选模式

<Table TItem="StudentViewModel" AutoGenerateColumns="true" Items="StudentInfoList" ShowToolbar="true" IsMultipleSelect="true"></Table>

图片图片IGu28资讯网——每日最新资讯28at.com

增加Table搜索功能

<Table TItem="StudentViewModel" AutoGenerateColumns="true" Items="StudentInfoList" ShowToolbar="true" IsMultipleSelect="true" ShowSearch="true">    <SearchTemplate>        <GroupBox Title="搜索条件">            <div class="row g-3 form-inline">                <div class="col-12 col-sm-6">                    <BootstrapInput @bind-Value="@context.Name" PlaceHolder="请输入姓名" maxlength="50" ShowLabel="true" DisplayText="姓名" />                </div>                <div class="col-12 col-sm-6">                    <BootstrapInput @bind-Value="@context.Gender" PlaceHolder="请输入性别" maxlength="500" ShowLabel="true" DisplayText="性别" />                </div>            </div>        </GroupBox>    </SearchTemplate></Table>

图片图片IGu28资讯网——每日最新资讯28at.com

增加Table增、删、改、查、分页功能

<Table TItem="StudentViewModel"       AutoGenerateColumns="true"       ShowToolbar="true"       IsMultipleSelect="true"       OnSaveAsync="@OnSaveAsync"       OnQueryAsync="@OnQueryAsync"       OnDeleteAsync="@OnDeleteAsync"       IsStriped="true"       IsBordered="true"       ShowSearch="true"       IsPaginatinotallow="true"       ShowSearchText="true">    <TableColumns>        <TableColumn Sortable="true" Filterable="true" Searchable="true" @bind-Field="@context.StudentID" />        <TableColumn Sortable="true" Filterable="true" Searchable="true" @bind-Field="@context.Name" />        <TableColumn Sortable="true" Filterable="true" Searchable="true" @bind-Field="@context.ClassName" />        <TableColumn Sortable="true" Filterable="true" Searchable="true" @bind-Field="@context.Gender" />    </TableColumns>    <SearchTemplate>        <GroupBox Title="搜索条件">            <div class="row g-3 form-inline">                <div class="col-12 col-sm-6">                    <BootstrapInput @bind-Value="@context.Name" PlaceHolder="请输入姓名" maxlength="50" ShowLabel="true" DisplayText="姓名" />                </div>                <div class="col-12 col-sm-6">                    <BootstrapInput @bind-Value="@context.Gender" PlaceHolder="请输入性别" maxlength="500" ShowLabel="true" DisplayText="性别" />                </div>            </div>        </GroupBox>    </SearchTemplate></Table>


IGu28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-74192-0.html.NET中使用BootstrapBlazor组件库Table实操篇

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 100000行级别数据的 Excel 导入优化之路

下一篇: Rust异步编程的可观察调试工具:Await-Tree

标签:
  • 热门焦点
  • Redmi Pad评测:红米充满野心的一次尝试

    从Note系列到K系列,从蓝牙耳机到笔记本电脑,红米不知不觉之间也已经形成了自己颇有竞争力的产品体系,在中端和次旗舰市场上甚至要比小米新机的表现来得更好,正所谓“大丈夫生居
  • Automa-通过连接块来自动化你的浏览器

    1、前言通过浏览器插件可实现自动化脚本的录制与编写,具有代表性的工具就是:Selenium IDE、Katalon Recorder,对于简单的业务来说可快速实现自动化的上手工作。Selenium IDEKat
  • 如何正确使用:Has和:Nth-Last-Child

    我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字。例如,一个拥有三个或更多子项的grid。你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会
  • 三分钟白话RocketMQ系列—— 如何发送消息

    我们知道RocketMQ主要分为消息 生产、存储(消息堆积)、消费 三大块领域。那接下来,我们白话一下,RocketMQ是如何发送消息的,揭秘消息生产全过程。注意,如果白话中不小心提到相关代
  • 零售大模型“干中学”,攀爬数字化珠峰

    文/侯煜编辑/cc来源/华尔街科技眼对于绝大多数登山爱好者而言,攀爬珠穆朗玛峰可谓终极目标。攀登珠峰的商业路线有两条,一是尼泊尔境内的南坡路线,一是中国境内的北坡路线。相
  • iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    【Techweb评测】去年10月,iQOO推出了一款Neo7手机,该机搭载了联发科天玑9000+,配备独显芯片Pro+,带来了同价位段最佳的游戏体验,一经上市便受到了诸多用
  • OPPO K11采用全方位护眼屏:三大护眼能力减轻视觉疲劳

    日前OPPO官方宣布,全新的OPPO K11将于7月25日正式发布,将主打旗舰影像,和同档位竞品相比,其最大的卖点就是将配备索尼IMX890主摄,堪称是2000档位影像表
  • 苹果MacBook Pro 2021测试:仍不支持平滑滚动

    据10月30日9to5 Mac 消息报道,苹果新的 14 英寸和 16 英寸 MacBook Pro 2021 上市后获得了不错的评价,亮点包括行业领先的性能,令人印象深刻的电池续航,精美丰
  • 北京:科技教育体验基地开始登记

      北京“科技馆之城”科技教育体验基地登记和认证工作日前启动。首批北京科技教育体验基地拟于2023年全国科普日期间挂牌,后续还将开展常态化登记。  北京科技教育体验基
Top