CYQ.Data+EasyUI开发:几个相关的问题CheckBox、Tree、TreeGrid
前言:
话说到新的公司已经呆了三个星期了,从上班的第二天开始就一直在写项目文档和给开发人员培训,以至于我的QQ签名从"我不是来搞培训的“到最后直接换成”我是来搞培训的“。
虽然挂名开发经理,但下面目前就2人,手下的人虽然混过了2年工龄,但连进程,线程,泛型,面向对象等基础都摸不着头脑的小女孩,要指望她们写代码,只好时不时的抽空给讲基础了。
话说下周的下周还会从Boss的母校里招来二十几个学生过来实习,要我分解项目,写出详细的文档,然后简单培训下学生,让学生看着文档就能干活,明白了我是来搞培训的。
好了,玩笑过后,下面讲讲当前用EasyUI遇到的几点问题:
1:兼容IE8问题
话说当前最新版本easyUI 1.3.4不支持ie8,听说是jq2.0不支持的原因,只好降级使用到easyui 1.3.2,对应的jq1.8版本。
2:Form表单的CheckBox问题
easyUI有个Form表单的自动赋值:$("#id").form('load',json);
一开始用这样的代码:
using (MAction action = new MAction(TableNames.Roles))
{
if (action.Fill(ID))
{
return action.Data.ToJson();
}
}
结果发现返回的json怎么也给checkbox赋不了值,网上也没对应的资料好寻,最后调一下js,看到普通的input赋值,想到了on。
于是把返回的true替换成on,[action.Data.ToJson().Replace("True", "on")] 就可以了。
3:DataGrid里的CheckBox问题:
对于表格,需要将某些bool型的字段格式化成checkbox显示,找到了半天,发现只有用formatter格式化出来自己的样式:
var formatCheckBox = function (value, row, index) {
if (value == "" || value == "True") {
return "<input type='checkbox' checked='checked' disabled='disabled' />";
} else {
return "<input type='checkbox' disabled='disabled' />";
}
}
然后界面指定:
<th data-options="field:'IsEnabled',formatter:formatCheckBox" > 是否启用</th>
悲催的是,格式出来的控件,没有对应的API可以获取相关的值,目前的处理方法只好通过增加点击事件,来处理后续状态改变后值的提交。
4:Tree 的绑定(MDataTable表格直接转Json,不用多次查询数据库):
研究了一下Tree的绑定的json格式,然后写了一个递归函数,直接把一个MDataTable转成树型的Json。
// string id,string parentID,string text,string state,string url
/// <summary>
/// 将表格转成Tree对应的Json,对应的字段为(id,parentiID,text,state,url)
/// </summary>
/// <param name="dt"></param>
/// <param name="parentID">为0或为空</param>
/// <returns></returns>
public static string ToTreeJson(MDataTable dt, string parentID)
{
List<MDataRow> firstDt = dt.FindAll("ParentID='" + parentID + "'");//第一级菜单
if (firstDt.Count > )
{
MDataRow row = null;
JsonHelper json = new JsonHelper();
string id, text, url;
for (int i = ; i < firstDt.Count; i++)
{
row = firstDt[i];
id = row.Get<string>("id");
text = row.Get<string>("text");
json.Add("id", id);
json.Add("text", text);
url = row.Get<string>("url");
if (!string.IsNullOrEmpty(url))
{
json.Add("attributes", "{\"url\":\"" + url + "\"}", true);
}
string children = ToTreeJson(dt, id);
if (!string.IsNullOrEmpty(children))
{
if (row.Get<bool>("state"))
{
json.Add("state", "closed");
}
json.Add("children", children, true);
}
json.AddBr();
}
return json.ToString(true);
}
return string.Empty;
}
对于传进来的MDataTable,需要修改列名和对应的字段对上,然后保留一个通用的上级字段(ParentID)就可以了,最终就出来这种格式了。

5:TreeGrid的绑定:
在功能权限这一块,需要用到TreeGrid这种格式,最终发现决定上下级的json,是叫“_parentId”,还有该字段不能指定一个不存在的上级,不然不显示。
对于这个,我也写了一个简单的转换函数:
/// <summary>
/// 将表格转成GreeGrid对应的Json.
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string ToTreeGridJson(MDataTable dt)
{
int index = dt.Columns.GetIndex("ParentID");
if (index > -)
{
dt.Columns[index].ColumnName = "_parentId";
int value = ;
foreach (MDataRow row in dt.Rows)
{
value = row.Get<int>(index);
if (value == || row.Get<int>("id") == value)//GreeGrid不存在的父ID不能出现
{
row[index].Value = DBNull.Value;
}
}
}
return dt.ToJson(true, false);
}
树形的效果就出来了:

目前项目刚开始,只遇到并处理了这几个基本的问题,后续若有问题待定。
总结:
话说男女搭配,干活不累,是有那么点道理。
CYQ.Data+EasyUI开发:几个相关的问题CheckBox、Tree、TreeGrid的更多相关文章
- CYQ.Data 快速开发EasyUI
EasyUI: 前端UI框架之一, 相对ExtJs来说,算是小了,这两天,抽空看了下EasyUI的相关知识,基本上可以和大伙分享一下: 官网: http://www.jeasyui.com/ 学习的话 ...
- CYQ.Data V5 分布式缓存Redis应用开发及实现算法原理介绍
前言: 自从CYQ.Data框架出了数据库读写分离.分布式缓存MemCache.自动缓存等大功能之后,就进入了频繁的细节打磨优化阶段. 从以下的更新列表就可以看出来了,3个月更新了100条次功能: 3 ...
- CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)
事件的结果 经过多天的思考及忙碌的开发及测试,CYQ.Data 终于在UI上全面支持WPF,至此,CYQ.Data 已经可以方便支持wpf的开发,同时,框架仍保留最低.net framework2.0 ...
- CYQ.Data 支持WPF相关的数据控件绑定.Net获取iis版本
CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09) 事件的结果 经过多天的思考及忙碌的开发及测试,CYQ.Data 终于在UI上全面支持WPF,至此,CYQ.Data 已经可以方便 ...
- 终于等到你:CYQ.Data V5系列 (ORM数据层)最新版本开源了
前言: 不要问我框架为什么从收费授权转到免费开源,人生没有那么多为什么,这些年我开源的东西并不少,虽然这个是最核心的,看淡了就也没什么了. 群里的网友:太平说: 记得一年前你开源另一个项目的时候我就说 ...
- CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维
前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...
- CYQ.Data V5 从入门到放弃ORM系列:框架的优势
前言: 框架开源后,学习使用的人越来越多了,所以我也更加积极的用代码回应了. 在框架完成了:数据库读写分离功能 和 分布式缓存功能 后: 经过三天三夜的不眠不休,终于完成框架第三个重量级的功能:自动化 ...
- CYQ.Data V5 MDataTable 专属篇介绍
前言 以前一两个月才出一篇,这三天有点变态地连续1天1篇(其实都是上周末两天写好的存货). 短期应该没有新的和此框架相关的文章要写了,这应该是最后一篇,大伙且看且珍惜. 前两篇讲数据库读写分离和分布式 ...
- CYQ.Data.Orm.DBFast 新增类介绍(含类的源码及新版本配置工具源码)
前言: 以下功能在国庆期就完成并提前发布了,但到今天才有时间写文介绍,主要是国庆后还是选择就职了,悲催的是上班的地方全公司都能上网,唯独开发部竟不让上网,是个局域网. 也不是全不能上,房间里有三台能上 ...
随机推荐
- Linux学习笔记之兄弟连
systemctl --user enable pulseaudio说明:安装完成后系统没有声音,用该命令可以打开.ifconfig eth0 192.168.118.1说明:给网卡设置IP地址.ap ...
- POCO库——Foundation组件之缓存Cache
缓存Cache:内部提供多种缓存Cache机制,并对不同机制的管理缓存策略不同实现: ValidArgs.h :ValidArgs有效键参数类,模板参数实现,_key:键,_isValid:是否有效, ...
- 【Java并发系列01】Thread及ThreadGroup杂谈
img { border: solid black 1px } 一.前言 最近开始学习Java并发编程,把学习过程记录下.估计不是那么系统,主要应该是Java API的介绍(不涉及最基础的概念介绍), ...
- Knockout.js随手记(6)
实时反映对象属性的变化 在前一篇博客中我们使用了如下代码去新增user对象,即push方法: $("#btnAddUser").click(function () { vm.use ...
- Jetpack 由 WordPress.com 出品
官网:https://jetpack.com/ Jetpack 由 WordPress.com 出品. Jetpack 通过为您提供访客统计数据和安全服务.加速图像传输以及帮您获得更多浏览量,可以简化 ...
- MIT 6.828 JOS学习笔记11 Exercise 1.8
Exercise 1.8 我们丢弃了一小部分代码---即当我们在printf中指定输出"%o"格式的字符串,即八进制格式的代码.尝试去完成这部分程序. 解答: 在这个练 ...
- oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数
花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...
- Java RMI之HelloWorld篇
Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方 ...
- 矩阵快速幂 HDU 4565 So Easy!(简单?才怪!)
题目链接 题意: 思路: 直接拿别人的图,自己写太麻烦了~ 然后就可以用矩阵快速幂套模板求递推式啦~ 另外: 这题想不到或者不会矩阵快速幂,根本没法做,还是2013年长沙邀请赛水题,也是2008年Go ...
- 从零开始山寨Caffe·捌:IO系统(二)
生产者 双缓冲组与信号量机制 在第陆章中提到了,如何模拟,以及取代根本不存的Q.full()函数. 其本质是:除了为生产者提供一个成品缓冲队列,还提供一个零件缓冲队列. 当我们从外部给定了固定容量的零 ...