|
环境:
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
|