jQuery Easyui datagrid动态列绑定

前几天有人在使用jQuery EasyUI的datagrid时,遇到不会动态绑定列的情况,而网上给出的例子可能也是比较早的处理办法,竟然需要修改easyui源码,其实解决这问题的思路是很简单,我们只需修改要显示的列即可。那位朋友最后改为这种处理时,发现还是有问题,最终我发现她返回不是合法json,里边多个方括号,这里推荐大家使用本站的JSON在线校验格式化工具来验证返回json是否正确。

这里我们以上篇文章中类似的简单json来说明这个问题,比如后台要根据当前用户的权限返回不同的json:

分享一个最好用的UI前端框架!

.代码  

  1. public ActionResult getstudents(int level=0)
  2. {
  3. List<Student> list = new List<Student>();
  4. list.Add(new Student() { id = 1, name = "小李" });
  5. list.Add(new Student() { id = 2, name = "小王" });
  6. //级别是老师,则可查看学生地址
  7. if (level == 1)
  8. {
  9. list = new List<Student>();
  10. list.Add(new Student() { id = 1, name = "小李", address = "北京" });
  11. list.Add(new Student() { id = 2, name = "小王", address = "上海" });
  12. }
  13. return Json(list, JsonRequestBehavior.AllowGet);
  14. }

那么使用easyui
datagrid时,页面上有:

.代码  

  1. <table id="tt" style="width:700px;height:250px"></table>

如果你在table上使用了class="easyui-datagrid"那么你会发现ajax请求了两次,具体查看办法可看看chrome下ajax请求结果。

默认显示列调用:

.代码  

  1. $(function () {
  2. $(‘#tt‘).datagrid({
  3. url: ‘/home/getstudents‘,
  4. columns: [[
  5. { field: ‘id‘, title: ‘学生ID‘, width: 80 },
  6. { field: ‘name‘, title: ‘姓名‘, width: 120 }
  7. ]]
  8. });
  9. });

显示结果如下:

那么当老师级别查看的时候,只需要修改下columns即可,后台json返回要加上address列。当然这里的权限我们作为演示是传过去的,真正项目中肯定是要在后台判断的。 分享一个最好用的UI前端框架!

.代码  

  1. $(‘#tt‘).datagrid(‘options‘).url = ‘/home/getstudents?level=1‘;
  2. $(‘#tt‘).datagrid({
  3. columns: [[
  4. { field: ‘id‘, title: ‘学生ID‘, width: 80 },
  5. { field: ‘name‘, title: ‘姓名‘, width: 120 },
  6. { field: ‘address‘, title: ‘地址‘, width: 120 }
  7. ]]
  8. });

结果如下:

到这我们本篇所提到的问题已得到解决,其实解决思路还是来自easyui的官网,但很多人都没有这个习惯,出了问题不会主动去看官网的说明。当然也有不少朋友都访问不了官网,我这几天发现google的jQuery cdn也不稳定,迫使本人开始使用新浪的jQuery cdn。

时间: 2024-10-25 04:43:04

jQuery Easyui datagrid动态列绑定的相关文章

jquery easyui datagrid动态改变title的值

title:'<input type="text" id="txtTitle1" style="background:none;border:none;"/>', onLoadSuccess:function(data) { $("#txtTitle1").val("所有教师 人数:"+$("#IndeterminateMembers").datagrid("get

转载 -- jquery easyui datagrid 动态表头 + 嵌套对象属性展示

代码功能: 1.datagrid 的表头由后台生成,可以配置在数据库 2.datagrid 的列绑定数据 支撑嵌套对象 $(function() { var columns = new Array(); var cols = new Array(); var colData = new Object(); $.post("url","params",function(data){ //动态生成表头开始 if(data.xxxx != null){ $.each(da

JQuery EasyUI DataGrid动态合并单元格

/**        * EasyUI DataGrid根据字段动态合并单元格        * @param fldList 要合并table的id        * @param fldList 要合并的列,用逗号分隔(例如:"name,department,office");        */        function MergeCells(tableID, fldList) {            var Arr = fldList.split(",&quo

jquery easyui datagrid 动态 加载列

实现方式: 首先根据输入的sql语句获得相关的列名称返回给前台,然后在datagrid中动态加载列,接着根据查询条件(包括sql语句)获取相关的记录返回给前台用于填充datagrid.从而实现类似oracle web版的sql查询. 前台主要js为: Js代码   function sqlSearch(){ var sqlStatement = $.trim($("#sqlStatementId").val()); if(sqlStatement == null || sqlState

jquery easyui DataGrid 动态的改变列显示的顺序

$.extend($.fn.datagrid.methods,{ columnMoving: function(jq){ return jq.each(function(){ var target = this; var cells = $(this).datagrid('getPanel').find('div.datagrid-header td[field]'); cells.draggable({ revert:true, cursor:'pointer', edge:5, proxy:

jquery easyUI datagrid 通过一般处理程序绑定数据库

初学easyui,搞了三天,终于将datagrid与后台数据库绑定成功,界面有点不太美观,以后继续努力. 后台一般处理程序取数据代码 1 <%@ WebHandler Language="C#" Class="jsonSms_group" %> 2 3 using System; 4 using System.Web; 5 using System.Configuration; 6 using System.Data; 7 using System.Da

Silverlight系列--动态生成DataGrid列 根据动态列绑定Dictionary数据

1.获取表头数据源动态生成DataGrid表头 DataGridTextColumn d = new DataGridTextColumn(); d.Header = itemPriceClass.PriceKindCode + itemPriceClass.PriceKindName; Binding bin = new Binding(); bin.Converter = new RowIndexConverter(); bin.ConverterParameter = itemPriceC

JQuery easyUi datagrid 中 editor 动态设置最大值最小值

前言 近来项目中使用到 easyui 来进行页面设计,感觉挺方便的,但是网上除了api外,其他有价值的资料比较少,故在此分享一点经验,供大家参考. 问题 JQuery easyUi datagrid 可编辑行的editor属性具有 min 和 max 属性,设置可以输入的最大值和最小值,但是这个是固定的,如下: [html] view plain copy {field:'workRate',title:'<%/*填报*/%><bean:message key="task.wo

jQuery EasyUI datagrid列名包含特殊字符会导致表格错位

首先申明:本文所述的Bug存在于1.3.3以及更高版本中,其它低版本,本人未测试,太老的版本不想去折腾了. 洒家在写前端的SQL执行工具时,表格用了 jQuery EasyUI datagrid,因为用户的SQL是千奇百怪的,所以出现了诸如:"BLOCKS*8/1024","trunc(SYSDATE)"之类的列名(field)时,表格就会错位,而且含有特殊字符的列无法手工调整大小. 经分析,datagrid组件在画表格的时候会在宿主DOM后动态追加一个style节