首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

Blazor开发框架Known-V2.0.9

编程知识
2024年08月22日 15:00

V2.0.9

Known是基于Blazor的企业级快速开发框架,低代码,跨平台,开箱即用,一处代码,多处运行。本次版本主要是修复一些BUG和表格页面功能增强。

概述

  • 基于C#Blazor的快速开发框架,开箱即用,跨平台。
  • 模块化,单页应用,混合桌面应用,Web和桌面共享一处代码。
  • UI默认支持AntDesign,可扩展其他UI组件库。
  • 包含模块、字典、组织、角色、用户、日志、消息、工作流、定时任务等功能。
  • 低代码、简洁、易扩展,让开发更简单、更快捷!

特性

  • 快速开发:基于Blazor,在线表单设计,自动生成代码
  • 通用权限:内置通用权限模块,只需专注业务功能
  • 国际化:提供完备的国际化多语言解决方案
  • 抽象UI:抽象UI层,易扩展,支持Ant Design
  • 最佳实践:低代码,一人多角色,沟通高效,成本最低
  • C#语言:全量使用C#进行全栈开发

如果对您有帮助,点击⭐Star⭐关注 ,感谢支持开源!

更新日期

  • 2024-08-22

更新内容

  • 🐛修复DataReader转字典报错问题
  • 😄AntBlazor升级至V0.20.2
  • 🐛修复实体类表单确定继续主键重复问题
  • 🐛修复打开新增表单克隆默认实体只读属性报错问题
  • 🔨优化无代码表单界面无法验证和输入字符减少问题
  • 😄添加支持WebApi项目
  • 😄表格排序和默认排序方式设置
  • 😄表格页面添加默认分页大小设置
  • 😄表格查询条件支持默认值
  • 😄分页查询支持数据统计
  • 😄数据字典类别支持修改和删除
  • 🐛修复SqlSugar日期查询条件问题
  • 🔨优化多语言设置

详细内容

1. 内置功能增强

  • 数据字典类别支持修改和删除

image

2. 表格功能增强

  • 表格排序和默认排序方式设置
  • 表格页面添加默认分页大小设置

image

  • 表格查询条件支持默认值
//在OnPageInitAsync方法中设置DefaultQuery对象,对象属性为实体类属性
//注意:一定要在await base.OnPageInitAsync();之前设置
protected override async Task OnPageInitAsync()
{
    var date = DateTime.Now.ToString("yyyy-MM-dd");
    DefaultQuery = new { CreateTime = $"{date}~{date}" };
    
    await base.OnPageInitAsync();
    Service = await CreateServiceAsync<ISystemService>();

    Table.OnQuery = Service.QueryLogsAsync;
    Table.Column(c => c.Type).Template((b, r) => b.Tag(r.Type));
}

image

  • 分页查询支持数据统计,统计支持SQL函数和SQL表达式
//前端,在OnPageInitAsync中设置TopStatis模板,查询数据时根据后端返回结果自动刷新
protected override async Task OnPageInitAsync()
{
    await base.OnPageInitAsync();
    Service = await CreateServiceAsync<IApplyService>();

    Table.FormType = typeof(ApplyForm);
    Table.OnQuery = Service.QueryApplysAsync;
    Table.TopStatis = this.BuildTree<PagingResult<TbApply>>((b, r) =>
    {
        var sb = new System.Text.StringBuilder();
        sb.Append("<div style=\"padding-left:10px;color:#108ee9;\">");
        sb.Append($"总数:<span style=\"font-weight:bold\">{r?.TotalCount}</span>,");
        sb.Append($"撤回:<span style=\"font-weight:bold\">{r?.Statis?.GetValue<int>("RevokeCount")}</span>,");
        sb.Append($"待审核:<span style=\"font-weight:bold\">{r?.Statis?.GetValue<int>("VerifingCount")}</span>,");
        sb.Append($"审核通过:<span style=\"font-weight:bold\">{r?.Statis?.GetValue<int>("PassCount")}</span>,");
        sb.Append($"审核退回:<span style=\"font-weight:bold\">{r?.Statis?.GetValue<int>("FailCount")}</span>");
        sb.Append("</div>");
        b.Markup(sb.ToString());
    });
    Table.Column(c => c.BizStatus).Template((b, r) => b.Tag(r.BizStatus));
}

//后端,设置查询条件StatisColumns统计栏位属性,支持Function和Expression
    internal static Task<PagingResult<TbApply>> QueryApplysAsync(Database db, PagingCriteria criteria)
    {
        var sql = @"select a.*,b.BizStatus,b.CurrStep,b.CurrBy,b.ApplyBy,b.ApplyTime,b.VerifyBy,b.VerifyTime,b.VerifyNote 
from TbApply a,SysFlow b 
where a.Id=b.BizId and a.CompNo=@CompNo";
        criteria.StatisColumns = [
            new StatisColumnInfo { Id = nameof(TbApply.Id), Function = "count" },
            new StatisColumnInfo { Id = "RevokeCount", Expression = $"sum(case when BizStatus='{FlowStatus.Revoked}' then 1 else 0 end)" },
            new StatisColumnInfo { Id = "VerifingCount", Expression = $"sum(case when BizStatus='{FlowStatus.Verifing}' then 1 else 0 end)" },
            new StatisColumnInfo { Id = "PassCount", Expression = $"sum(case when BizStatus='{FlowStatus.VerifyPass}' then 1 else 0 end)" },
            new StatisColumnInfo { Id = "FailCount", Expression = $"sum(case when BizStatus='{FlowStatus.VerifyFail}' then 1 else 0 end)" }
        ];
        return db.QueryPageAsync<TbApply>(sql, criteria);
    }

image

3. WebApi项目

  • 添加支持WebApi项目,在项目Program中AddKnown和AddKnownCore
builder.Services.AddKnown(info =>
{
    info.Id = "API";
    info.Type = AppType.WebApi;//App类型设为WebApi
});
builder.Services.AddKnownCore(info =>
{
    //数据库连接
    info.Connections = [new Known.ConnectionInfo
    {
        Name = "Default",
        DatabaseType = DatabaseType.SQLite,
        ProviderType = typeof(Microsoft.Data.Sqlite.SqliteFactory),
        ConnectionString = builder.Configuration.GetSection("ConnString").Get<string>()
    }];
});
From:https://www.cnblogs.com/known/p/18374071
本文地址: http://shuzixingkong.net/article/1340
0评论
提交 加载更多评论
其他文章 Linux-mknod命令
mknod 创建块设备或者字符设备文件。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。 用法: mknod [选项]... 名称 类型 [主设备号 次设备号] 选项参数列表: 选项 说明 --version 显示命令版本信息 --he
kubeadm升级k8s之1.23.17->1.24.17
查看当前版本 [root@k8s-master31 ~]# kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIM
使用SiliconCloud快速体验SimpleRAG(手把手教程)
SiliconCloud介绍 SiliconCloud 基于优秀的开源基础模型,提供高性价比的 GenAI 服务。 不同于多数大模型云服务平台只提供自家大模型 API,SiliconCloud上架了包括 Qwen、DeepSeek、GLM、Yi、Mistral、LLaMA 3、SDXL、Instan
使用SiliconCloud快速体验SimpleRAG(手把手教程) 使用SiliconCloud快速体验SimpleRAG(手把手教程) 使用SiliconCloud快速体验SimpleRAG(手把手教程)
小红书分享踩坑和解决
​小红书官方介入链接:小红书分享开放平台 下载sdk文件,位置如下图所示 之后可以按照官方文档进行开发,接入也较简单,这里主要是说明一些隐藏的坑点 一、分享应用内的文件到小红书(这里主要是指应用包名下的文件内容),需要注意setFileProviderAuthority()这个方法。 例如我的代码如
小红书分享踩坑和解决 小红书分享踩坑和解决
【工程应用十一】基于PatchMatch算法的图像修复研究(inpaint)。
这个东西是个非常古老的算法了,大概是2008年的东西,参考资料也有很多,不过基本上都是重复的。最近受一个朋友的需求,前后大概用了二十多天时间去研究,也有所成果,在这里简单的予以记录。图像修复这个东西目前流行的基本都是用深度学习来弄了,而且深度学习的效果还是非常不错的。
【工程应用十一】基于PatchMatch算法的图像修复研究(inpaint)。 【工程应用十一】基于PatchMatch算法的图像修复研究(inpaint)。 【工程应用十一】基于PatchMatch算法的图像修复研究(inpaint)。
WPF 设备输入事件封装
本文主要介绍WPF应用对鼠标输入、触摸屏触笔以及触摸事件的封装 之前有简单说明设备输入类型&#160;WPF 屏幕点击的设备类型 - 唐宋元明清2188 - 博客园 (cnblogs.com) 1、鼠标 -&#160;通过Mouse相关的事件参数MouseButtonEventArgs中的数据,e.
Cookie,Session Filter,Listener详解
HTTP请求的无状态性 HTTP的无状态性是其一个重要的特征,指的是HTTP协议本身并不保留客户端与服务器交互的历史信息,换而言之,即每次的HTTP请求都是独立的,服务器在处理每一个请求时都不会记住前一个请求的状态 无状态的含义 独立性:每次的HTTP请求都是独立的,不依赖于之前的请求,即服务器处理
Cookie,Session Filter,Listener详解 Cookie,Session Filter,Listener详解
manim边学边做--直线类
直线是最常用的二维结构,也是构造其他二维图形的基础。manim中针对线性结构提供了很多模块,本篇主要介绍常用的几个直线类的模块。 Line:通用直线 DashedLine:各种类型的虚线 TangentLine:根据已有的几何体,绘制它的切线 LabeledLine:带有标签的直线 其中,Dashe
manim边学边做--直线类 manim边学边做--直线类 manim边学边做--直线类