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:

(图 3)
//合拢下拉树function collapse(){$('#w清单明细').treegrid('collapseAll');}

只供学习参考,禁止商业用途,否则后果自负!

二 TreeGrid的绑定相关推荐

  1. 微信小程序Megalo开发踩坑计-普通二维码绑定

    原文首发于http://blog.yumengtao.top 首先简单说一下普通二维码绑定功能作用: 兼容线下已有的二维码 能同时支持微信.支付宝小程序 小程序启动传参 微信小程序普通二维码资料 支付 ...

  2. MyBatis源码解析(十二)——binding绑定模块之MapperRegisty

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6758456.html 1.回顾 之前解析了解析模块parsing,其实所谓的解析模块就是为 ...

  3. Blender图解教程:马里奥食人花三部曲(二)骨骼绑定和动画(网格丢失的问题已解决 附模型下载)

    书接上文<Blender图解教程:马里奥食人花三部曲(一)建模和贴图>,本文将完成食人花的骨骼绑定和动画工作. 文章目录 模型检查 绑定 搭建骨架 蒙皮 矫正权重 动画 Idle动画 Ho ...

  4. WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证

    一.通过代码实现数据绑定 通过代码实现数据绑定,使用的是System.Windows.Data命名空间的Binding类,主要使用Binding类的如下的属性: Source属性:绑定到的数据源 Mo ...

  5. 白话学习MVC(六)模型绑定

    一.什么是模型绑定? 模型绑定存在的意义就是为Action的参数提供值,例如:如下表单中提交了数据,那么Action(即:Index)的参数Id,Name的值就是表单中对应的name属性相同的值,而表 ...

  6. 安卓中事件绑定的写法

    2019独角兽企业重金招聘Python工程师标准>>> 一.点击事件的绑定 textView.setTag(i); textView. setOnClickListener(onMe ...

  7. 【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView )

    Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...

  8. python 类的绑定方法和非绑定方法

    一.绑定方法 1.对象的绑定方法 首先我们明确一个知识点,凡是类中的方法或函数,默认情况下都是绑定给对象使用的.下面,我们通过实例,来慢慢解析绑定方法的应用. class People:def __i ...

  9. python:绑定方法和非绑定方法

    类中定义的方法大致可以分为两类:绑定方法和非绑定方法.其中绑定方法又可以分为绑定到对象的方法和绑定到类的方法. 一.绑定方法 1.1 对象的绑定方法 在类中没有被任何装饰器修饰的方法就是 绑定到对象的 ...

最新文章

  1. SAP PM入门系列20 - IH08 Equipment报表
  2. 6、日期格式化(DateFormat类和SimpleDateFormat类)
  3. 数据结构与算法 / 字符串匹配 / BF、PK 算法
  4. C#/.Net开发入门篇(1)——开发工具安装
  5. python把文件读成字节流_Python中struct模块对字节流/二进制流的操作教程
  6. Apache模块管理
  7. pku 1639 Picnic Planning 最小度限制生成树
  8. jquery选择器_jQuery选择器
  9. oracle 无法套取,mycat-oracle报java.sql.SQLException: 无法从套接字读取更多的数据
  10. LeetCode:81. Search in Rotated Sorted Array II
  11. inductive learning (归纳学习)与 transductive learning(直推学习)
  12. C. Dominant Piranha
  13. 小课堂week17 编程范式巡礼第二季 并发那些事
  14. 总是过目即忘,试试建立知识库吧
  15. win系统下制作OS X(黑苹果)系统安装U盘制作的2个方法
  16. 一款恋爱星座男女配对微信小程序源码
  17. Python爬取京东任意商品数据实战总结
  18. 电机仿真系列-基于LabVIEW的电机测试系统研究
  19. C/C++ Linux 出错处理函数(strerror 与 perror)
  20. 一种高效自然光供电的6LoWPAN无线传感节点

热门文章

  1. 【连载】听程序员部落酋长畅谈关于软件的人和事-节选3
  2. HFSS 快速建立微带线
  3. 2020下半年软考中级(系统集成项目管理工程师)(个人备考用)
  4. Salesforce: 关于Apexpages.Message类
  5. 亚马逊退货退款常见问题解答|官方
  6. 100种运营人必备工具(网站搜集)
  7. 网页美学设计原则(上)
  8. 教你怎么使用python批量下载图片
  9. 支付宝信用贷豪掷38亿抢客,微粒贷不怂
  10. qt在表格中如何画线_如何在电子表格中的某单元格内画一根长线