Ant for Blazor做单个表的增删查改
2024年02月27日花了一天时间弄出来了,基本弄好了,vs2022+blazor server+net8,引用的AntDesign版本是0.17.4 代码里的model和repository是用自己牛腩代码生成器生成的东西,sqlsugar的,记得在program里注入就好
相关代码:
@page "/Student" @using System.Text.Json @inject IMessageService _message @inject ModalService _modalService @inject DAL.IRepository<Model.Student,int> _repository; <div style="padding:10px;"> <Table TItem="Model.Student" DataSource="@datalist" @bind-PageSize="pageSize"> <TitleTemplate> <GridRow> <GridCol Span="16"> <Title Level="3">Student</Title> </GridCol> <GridCol Span="4"> <Button Type="primary" Icon="@IconType.Outline.PlusSquare" @onclick="PopAdd">新增</Button> </GridCol> <GridCol Span="4"> <Search @bind-Value="searchKey" Placeholder="搜索关键字" OnSearch="HandleSearch" /> </GridCol> </GridRow> </TitleTemplate> <ChildContent> <PropertyColumn Title="ID" Property="c=>c.Id"> </PropertyColumn> <PropertyColumn Title="学号" Property="c=>c.StuNo"></PropertyColumn> <PropertyColumn Title="姓名" Property="c=>c.StuName"> </PropertyColumn> <PropertyColumn Title="生日" Property="c=>c.Birthday"> </PropertyColumn> <PropertyColumn Title="余额" Property="c=>c.Balance"> </PropertyColumn> <ActionColumn Title="操作"> <Space> <SpaceItem> <Button Icon="@IconType.Outline.Edit" @onclick="(()=>Edit(context.Id))">编辑</Button> </SpaceItem> <SpaceItem> <Button Danger Icon="@IconType.Outline.Delete" @onclick="(()=>Delete(context.Id))">删除</Button> </SpaceItem> </Space> </ActionColumn> </ChildContent> <PaginationTemplate> <div style="margin:10px;"> <Pagination ShowTotal=showTotal Total="total" PageSize="pageSize" OnChange="HandlePageChange" /> </div> </PaginationTemplate> </Table> <Modal Title="@popTitle" @bind-Visible="@_visible" OnOk="@HandleOk"> <Form Model="@model" LabelColSpan="8" WrapperColSpan="16"> <FormItem Label="学号"> <Input @bind-Value="@context.StuNo" /> </FormItem> <FormItem Label="姓名"> <Input @bind-Value="@context.StuName" /> </FormItem> <FormItem Label="生日"> <DatePicker @bind-Value="@context.Birthday" /> </FormItem> <FormItem Label="余额"> <AntDesign.InputNumber @bind-Value="@context.Balance"></AntDesign.InputNumber> </FormItem> </Form> </Modal> </div> @code { Func<PaginationTotalContext, string> showTotal = ctx => $"总共 {ctx.Total} 条数据"; private List<Model.Student> datalist = new List<Model.Student>(); private Model.Student model = new Model.Student(); bool _visible = false; private int total = 0; //总记录数 private int pageIndex = 1; //第几页 private int pageSize = 3; //每页显示多少条数据 private string popTitle = "新增"; private string searchKey = ""; //页面初始化方法 protected override void OnInitialized() { base.OnInitialized(); BindListData(); } //显示分页数据 public void BindListData() { var q = _repository.GetAll(); q = q.Where(a => a.StuName.Contains(searchKey)); total = q.Count(); datalist = q.OrderByDescending(a=>a.Id).ToPageList(pageIndex, pageSize); StateHasChanged(); } //弹出新增的框框 public void PopAdd() { popTitle = "新增"; _visible = true; model = new Model.Student(); } //新增,编辑 private async Task HandleOk(MouseEventArgs e) { try { if (string.IsNullOrEmpty(model.StuNo) || string.IsNullOrEmpty(model.StuName)) { throw new Exception("请把学号和姓名填写完整。"); } Console.WriteLine($"提交的数据:{JsonSerializer.Serialize(model)}"); if (model.Id == 0) { _repository.Insert(model); _message.Info("新增成功!"); } else { _repository.Update(model); _message.Info("编辑成功!"); } _visible = false; BindListData(); } catch (Exception ex) { _visible = true; _message.Error("出错:" + ex.Message); } } //分页点击 public void HandlePageChange(PaginationEventArgs e) { pageIndex = e.Page; BindListData(); } //显示删除确认框 private void Delete(int id) { _modalService.Confirm(new ConfirmOptions() { Title = "是否确认删除?", Content = "ID为【" + id + "】的数据!", OnOk = (e) => { Console.WriteLine("删除:"+id); _repository.Delete(a => a.Id == id); BindListData(); _message.Info("删除成功!"); return Task.CompletedTask; }, OkType = "danger", }); } //显示编辑的框框 public void Edit(int id) { popTitle = "编辑"; model = _repository.FirstOrDefault(a => a.Id == id); _visible = true; } //查询 public void HandleSearch() { pageIndex = 1; BindListData(); } }
标签:BindListData,repository,void,private,Id,Ant,查改,Blazor,model From: https://www.cnblogs.com/niunan/p/18038607