二 TreeGrid的绑定
TreeGrid的绑定
(1)看一下效果截图:
(图 1)
实现界面的代码:
<table id="w清单明细" title="清单明细"class="easyui-treegrid" style="width:1300px;height:200px" data-options=" iconCls: 'icon-ok',rownumbers: true,//显示行数animate: true,collapsible: true,fitColumns:true,//自动设置宽度lines:true, idField: 'id', //节点idtreeField: 'text',//节点文本onClickRow:XuanZhong,//单击事件"><thead><tr><th data-options="field:'InventoryDetailID' ,width:60,hidden:true" >清单明细ID</th>// field:'InventoryDetailID,要和控制器传来的值对应//清单明细ID:写给人们看的<th data-options="field:'ProjectOrderID' ,width:60,hidden:true" >工程量订单ID</th><th data-options="field:'text' ,width:100" >编号</th><th data-options="field:'Name' ,width:100" > 名称</th><th data-options="field:'Unit' ,width:80" >单位</th><th data-options="field:'Price' ,width:80" > 单价</th><th data-options="field:'Amount' ,width:60" >数量</th><th data-options="field:'AllPrice' ,width:60" >合价</th> <th data-options="field:'Remark' ,width:80" >备注</th><th data-options="field:'Classification' ,width:120" > 类别</th><th data-options="field:'InventoryDetailFur_id' ,width:60,hidden:true" >工程量订单ID</th><th data-options="field:'PriceNumber' ,width:80" >单价编号</th></tr></thead></table>
把从控制器传来的额数据绑定到treegrid中:
function onClickTree(){var BindingQuota = $('#Project').combobox('getValue');$.getJSON("/GongChengLiangQingDan/SelectedInventoryDetail?ProjectOrderID="+BindingQuota,function(data){//把从控制器查出的数据绑定到w清单明细'中$('#w清单明细').treegrid('loadData',data);});
控制器所涉及的方法:
#region 查询清单明细public ActionResult SelectedInventoryDetail(string ProjectOrderID){DataTable dt = myInventoryDetail.SelectedInventoryDetail(Convert.ToInt32(ProjectOrderID));//调用逻辑层的方法StringBuilder stringbuilder = new StringBuilder();//实例化stringbuilderstringbuilder.Append(GetDataString(dt, "0"));//调用GetDataString方法(dt, "0"是两个参数)if (stringbuilder.Length > 0){//如果最后所传来的数剧>0,则就移除最后两个长度stringbuilder = stringbuilder.Remove(stringbuilder.Length - 2, 2);return Content(stringbuilder.ToString());//然后再返回给界面层}else{//return Content("no:no");string strin = "{}";//声明{}return Content(strin.ToString());//把转化的字符串用{}括起来,返回给界面层}}public string GetDataString(DataTable dt, string id){StringBuilder stringbuilder = new StringBuilder();//实例化stringbuilderDataView dv = new DataView(dt);//把dt的数据赋值给dvdv.RowFilter = "InventoryDetailFur_id=" + id;DataTable dtChild = dv.ToTable();if (dtChild.Rows.Count > 0){stringbuilder.Append("[");for (int i = 0; i < dtChild.Rows.Count; i++){string leiid = dtChild.Rows[i]["InventoryDetailID"].ToString();string chidstring = GetDataString(dt, dtChild.Rows[i]["InventoryDetailID"].ToString());if (!string.IsNullOrEmpty(chidstring)){ stringbuilder.Append("{ \"id\":\"" + dtChild.Rows[i]["InventoryDetailID"].ToString().Trim() + "\",\"text\":\"" + dtChild.Rows[i]["Number"].ToString().Trim() + "\",\"Name\":\"" + dtChild.Rows[i]["Name"].ToString().Trim() + "\",\"Unit\":\"" + dtChild.Rows[i]["Unit"].ToString().Trim() +"\",\"Price\":\"" + dtChild.Rows[i]["Price"].ToString().Trim() + "\",\"Amount\":\"" + dtChild.Rows[i]["Amount"].ToString().Trim() + "\",\"AllPrice\":\"" + dtChild.Rows[i]["AllPrice"].ToString().Trim() + "\",\"Remark\":\"" + dtChild.Rows[i]["Remark"].ToString().Trim() + "\",\"Classification\":\"" + dtChild.Rows[i]["Classification"].ToString().Trim() + "\",\"InventoryDetailFur_id\":\"" + dtChild.Rows[i]["InventoryDetailFur_id"].ToString().Trim() +"\",\"PriceNumber\":\"" + dtChild.Rows[i]["PriceNumber"].ToString().Trim() + "\",\"state\":\"closed\",\"children\":");stringbuilder.Append(chidstring);}else{stringbuilder.Append("{\"id\":\"" + dtChild.Rows[i]["InventoryDetailID"].ToString().Trim() + "\",\"text\":\"" + dtChild.Rows[i]["Number"].ToString().Trim() + "\",\"Name\":\"" + dtChild.Rows[i]["Name"].ToString().Trim() + "\",\"Unit\":\"" + dtChild.Rows[i]["Unit"].ToString().Trim() +"\",\"Price\":\"" + dtChild.Rows[i]["Price"].ToString().Trim() + "\",\"Amount\":\"" + dtChild.Rows[i]["Amount"].ToString().Trim() + "\",\"AllPrice\":\"" + dtChild.Rows[i]["AllPrice"].ToString().Trim() + "\",\"Remark\":\"" + dtChild.Rows[i]["Remark"].ToString().Trim() + "\",\"Classification\":\"" + dtChild.Rows[i]["Classification"].ToString().Trim() + "\",\"InventoryDetailFur_id\":\"" + dtChild.Rows[i]["InventoryDetailFur_id"].ToString().Trim() +"\",\"PriceNumber\":\"" + dtChild.Rows[i]["PriceNumber"].ToString().Trim() + "\" },");}}stringbuilder.Replace(',', ' ', stringbuilder.Length - 1, 1);stringbuilder.Append("]},");}return stringbuilder.ToString();}#endregion
从逻辑层调用的方法:
#region 查询清单明细public DataTable SelectedInventoryDetail(int ProjectOrderID){SqlParameter[] mySQL = {new SqlParameter("@Type",SqlDbType.Char), new SqlParameter("@ProjectOrderID",SqlDbType.Int)};mySQL[0].Value = "SelectedInventoryDetail";//和存储过程名对应mySQL[1].Value = ProjectOrderID;DataTable dt = myDALMethod.DAL_SelectDB_Par("BillOfQuantities", mySQL);return dt;//把数据返回给控制器}#endregion
数据层的SQL查询语句:
if @Type='SelectedInventoryDetail'begin
SELECT InventoryDetailID, ProjectOrderID,LTRIM(rtrim( Number))as Number,LTRIM (rtrim(PriceNumber)) as PriceNumber, ltrim(rtrim(Name)) as Name, ltrim(rtrim(Unit)) as Unit,LTRIM(rtrim(Price)) as Price, Ltrim(rtrim(Amount)) as Amount,LTRIM(RTRIM(AllPrice)) as AllPrice, ltrim(rtrim(Remark)) as Remark,LTRIM(rtrim(Classification)) as Classification, InventoryDetailFur_id
FROM SYS_InventoryDetailList
where SYS_InventoryDetailList.ProjectOrderID=@ProjectOrderIDend
(2)展开treegrid的方法:
(图 2)
// 展开下拉树function expand() {var BindingQuota = $('#Project').combobox('getValue');//这个是根据工程ID来展开的(如果你做的不需要任何条件,就不需要这个)$('#w清单明细').treegrid({url: '/GongChengLiangQingDan/SelectedInventoryDetail?ProjectOrderID='+BindingQuota });setTimeout(function () { aa(); }, 500);//调用展开方法}function aa() {$('#w清单明细').treegrid('expandAll');//展开全部的treeg}
(3)合拢treegrid:
//合拢下拉树function collapse(){$('#w清单明细').treegrid('collapseAll');}
只供学习参考,禁止商业用途,否则后果自负!
二 TreeGrid的绑定相关推荐
- 微信小程序Megalo开发踩坑计-普通二维码绑定
原文首发于http://blog.yumengtao.top 首先简单说一下普通二维码绑定功能作用: 兼容线下已有的二维码 能同时支持微信.支付宝小程序 小程序启动传参 微信小程序普通二维码资料 支付 ...
- MyBatis源码解析(十二)——binding绑定模块之MapperRegisty
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6758456.html 1.回顾 之前解析了解析模块parsing,其实所谓的解析模块就是为 ...
- Blender图解教程:马里奥食人花三部曲(二)骨骼绑定和动画(网格丢失的问题已解决 附模型下载)
书接上文<Blender图解教程:马里奥食人花三部曲(一)建模和贴图>,本文将完成食人花的骨骼绑定和动画工作. 文章目录 模型检查 绑定 搭建骨架 蒙皮 矫正权重 动画 Idle动画 Ho ...
- WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证
一.通过代码实现数据绑定 通过代码实现数据绑定,使用的是System.Windows.Data命名空间的Binding类,主要使用Binding类的如下的属性: Source属性:绑定到的数据源 Mo ...
- 白话学习MVC(六)模型绑定
一.什么是模型绑定? 模型绑定存在的意义就是为Action的参数提供值,例如:如下表单中提交了数据,那么Action(即:Index)的参数Id,Name的值就是表单中对应的name属性相同的值,而表 ...
- 安卓中事件绑定的写法
2019独角兽企业重金招聘Python工程师标准>>> 一.点击事件的绑定 textView.setTag(i); textView. setOnClickListener(onMe ...
- 【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView )
Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...
- python 类的绑定方法和非绑定方法
一.绑定方法 1.对象的绑定方法 首先我们明确一个知识点,凡是类中的方法或函数,默认情况下都是绑定给对象使用的.下面,我们通过实例,来慢慢解析绑定方法的应用. class People:def __i ...
- python:绑定方法和非绑定方法
类中定义的方法大致可以分为两类:绑定方法和非绑定方法.其中绑定方法又可以分为绑定到对象的方法和绑定到类的方法. 一.绑定方法 1.1 对象的绑定方法 在类中没有被任何装饰器修饰的方法就是 绑定到对象的 ...
最新文章
- SAP PM入门系列20 - IH08 Equipment报表
- 6、日期格式化(DateFormat类和SimpleDateFormat类)
- 数据结构与算法 / 字符串匹配 / BF、PK 算法
- C#/.Net开发入门篇(1)——开发工具安装
- python把文件读成字节流_Python中struct模块对字节流/二进制流的操作教程
- Apache模块管理
- pku 1639 Picnic Planning 最小度限制生成树
- jquery选择器_jQuery选择器
- oracle 无法套取,mycat-oracle报java.sql.SQLException: 无法从套接字读取更多的数据
- LeetCode:81. Search in Rotated Sorted Array II
- inductive learning (归纳学习)与 transductive learning(直推学习)
- C. Dominant Piranha
- 小课堂week17 编程范式巡礼第二季 并发那些事
- 总是过目即忘,试试建立知识库吧
- win系统下制作OS X(黑苹果)系统安装U盘制作的2个方法
- 一款恋爱星座男女配对微信小程序源码
- Python爬取京东任意商品数据实战总结
- 电机仿真系列-基于LabVIEW的电机测试系统研究
- C/C++ Linux 出错处理函数(strerror 与 perror)
- 一种高效自然光供电的6LoWPAN无线传感节点