FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 3509|回复: 2

分享一下这两天搞FineUICore的心得,顺便问些问题

[复制链接]
发表于 2020-11-25 06:31:17 | 显示全部楼层 |阅读模式
环境:
VS 2019 for MAC
MySQL for Mac
.NET 5.0 +

先上几张图,说一下暂时搞定了的一些issue。
1. 登陆机制:当多开一个页面,退出当前账号的时候,MVC的[Authorize]还是挺好用的。
记了returnURL,抛开了最顶层判断的js脚本。


2. 对于百度echarts的集成(先弄了假数据,后面要试试,查询条件,动态数据,再拼option的字符串)





3. 多语言,我用数据库搞定了,根据用户的语言编码。登录认证的时候,保存到Claims里面了。


4. 弄了个隐藏账号,不在user用户表中,结合了之前的passwordutil。


5. 就是我想弄的重头戏了。同一个View,实现多个页面。比如,左边树形图,系统设置下的5个功能,全部由一个View来实现。




我在后台弄了一张控件表。所有的设置,都是弄的 3个栏目(条件 + 动作 + 结果),我也是3层架构,哈哈哈,开玩笑的。

这里的 GridControl部分的ControlName一定要和实际表中的字段中的字段名一致。后面动态查询用的。

加载树的时候,我设置的是 node.NavigateUrl = menu.ControlAction + "?PageName=" + menu.Name;
后面根据地址中的pagename,取得一系列的东西,包括初始页面加载,查询等等。
根据 这里面的 OptionControl,ToolbarControl,GridControl开始填充Settings.cshtml.











后面查询的动态语句IformCollection帮了大忙,我这些 条件区域的控件有几个,分别叫什么都不清楚。都是 字段的名字。
不能搞动态变量,只能从我之前设计的控件表信息里取 字段名了,从formcollection中取contain的值。
再结合 system.linq.dynamic就可以动态查询了。

还有好多坑没踩完呢。。。。。

碰到一些问题,也请三石有空帮忙看看。

1. 查询按钮绑定数据集的时候,我根据调试,最前面一定要多两个不知道什么情况,我用了+2实现了。(就是下面这段代码中的 IDs)
[HttpPost]
        public ActionResult btnQuery_Click(IFormCollection values,int vPageIndex=0,int vPageSize=0)
        {
            vPageSize = TConfigHelper.PageSize;
            string pageName = values["hf"];

            List<TControlPageDtl> FieldList = new Settings().GetControlsForPage(pageName, User.FindFirst(ClaimTypes.Locality).Value, "GridControl");
            string[] IDs = new string[FieldList.Count + 2];
            for (int i = 0; i < FieldList.Count; i++)
            {
                IDs[i + 2] = FieldList.ControlName;
            }

            List<TControlPageDtl> items = new Settings().GetControlsForPage(pageName, User.FindFirst(ClaimTypes.Locality).Value, "OptionControl");
            string sqlCondition = "";

            for (int i = 0; i < items.Count; i++)
            {
                sqlCondition += items.ControlName + ".Contains(\"" + values[items.ControlName] + "\") and ";

            }
            sqlCondition += "1=1";
            DataTable dt = new Settings().GetCodeGroup(sqlCondition, pageName, vPageIndex, vPageSize);

            var resultGrid = UIHelper.Grid("resultGrid");
            resultGrid.RecordCount(dt.Rows.Count);
            resultGrid.DataSource(dt, IDs, false);

            return UIHelper.Result();
        }

2. 弹出框和 grid的 页码信息,好像依然是中文。
3. 控件初始化的时候,图标有个函数可以string转ICON:ctrl.Icon = FineUICore.IconHelper.String2Icon(ToolbarLists.Icon, true);
    如果对齐也能有这个功能就好了,我目前对齐是这么写的
            ctrl.HeaderTextAlign = TextAlign.Center;
            if (GridLists.TextAlign == "Center")
            {
                ctrl.TextAlign = TextAlign.Center;
            }
            else if (GridLists.TextAlign == "Right")
            {
                ctrl.TextAlign = TextAlign.Right;
            }
            else
            {
                ctrl.TextAlign = TextAlign.Left;
            }


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2021-2-24 23:11:53 | 显示全部楼层
高手,
厉害,赞!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-3-28 18:30 , Processed in 0.047301 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表