之前我们的项目在前台显示只需要把数据从数据库读出来进行显示就可以,datagrid的表头字段都是写死的,把数据往表里一扔,就基本没什么事儿了,结果客户前几天要求,其中一个字段不能是死的,应该是有多少项显示多少项,比如说,原来只需要显示:其他项总分,现在需要显示的则是:xx加分,xx加分,xx减分,xx加分。。。。字段不固定,有多少项也不确定,需要从数据库中查到相应的字段来进行显示。

不能要求客户来适应咱们的系统啊,而应该全心全意为客户着想,所以,开始改。原来的情况是,所有的字段都是固定的,而且要显示的字段是跟数据库中某张表对应的,只需要查出来就可以。现在的情况是,其中一部分字段是固定的,另一部分字段是不固定的,然后固定字段的数据是从原来的表中查出来的,不固定字段的数据是从另外一张表查出来的。

经过一下午和一晚上的努力,终于初步完成了显示效果,但是还有缺点就是没办法做到分页显示,现在的效果还需要进一步优化,先把当前完成的部分记录一下。

代码如下:

view端:

  1. //datagrid动态加载列
  2. function getjson()
  3. {
  4. $.getJSON('/QueryScores/QueryOtherAssess', null, function (otherscores) {
  5. var columns = new Array();
  6. var column2 = {
  7. field: '教工号', title: '教工号', width: 50
  8. }
  9. columns.push(column2);
  10. var column3 = { field: '教职工姓名', title: '教职工姓名' }
  11. columns.push(column3);
  12. var column4 = { field: '工作效率', title: '工作效率', width: 50 }
  13. columns.push(column4);
  14. var column5 = { field: '职业道德', title: '职业道德', width: 50 }
  15. columns.push(column5);
  16. var column6 = { field: '业务能力', title: '业务能力', width: 50 }
  17. columns.push(column6);
  18. var column7 = { field: '廉洁自律', title: '廉洁自律', width: 50 }
  19. columns.push(column7);
  20. var column8 = { field: '工作成绩', title: '工作成绩', width: 50 }
  21. columns.push(column8);
  22. //导入其他分值的循环
  23. for (var i = 0; i < otherscores.sum; i++) {
  24. var column1={
  25. field:otherscores.OtherScoresAssess[i],title:otherscores.OtherScoresAssess[i],width:70
  26. }
  27. columns.push(column1);
  28. }
  29. var column9 = { field: '总分', title: '总分', width: 50 }
  30. columns.push(column9);
  31. initTable(columns);
  32. })
  33. }
  34.  
  35. function initTable(columns) {
  36. $('#tt').datagrid({
  37. title: '查看成绩',
  38. url: '/QueryScores/QueryScoresIndex',
  39. width: '100%',
  40. rownumbers: true,
  41. columns: [
  42. columns
  43. ]
  44. });
  45. }

view端调了controller端两个方法,QueryOtherAssess是为了读取到需要动态加载的列的表头字段。QueryScoresIndex是将数据查到返回的方法。

QueryOtherAssess:

  1. public ActionResult QueryOtherAssess()
  2. {
  3. IList<string> OtherScoresAssess = OtherScoresAsscssProgramBLL.LoadEnities(u => u.IsUsed == true).Select(u => u.AsscssProgram).ToArray();
  4.  
  5. var OtherScoresAssessList = new
  6. {
  7. sum = OtherScoresAssess.Count(),
  8. OtherScoresAssess = OtherScoresAssess
  9. };
  10.  
  11. return Json(OtherScoresAssessList, JsonRequestBehavior.AllowGet);
  12.  
  13. }

QueryScoresIndex首先将数据查出来,然后转成json字符串返回前台。

具体查数据就不贴了,看一下赋值的段落:

  1. //表头
  2. DataTable FinalTable = new DataTable();
  3. FinalTable.Columns.Add("教工号", typeof(int));
  4. FinalTable.Columns.Add("教职工姓名", typeof(string));
  5. FinalTable.Columns.Add("工作效率", typeof(string));
  6. FinalTable.Columns.Add("职业道德", typeof(string));
  7. FinalTable.Columns.Add("业务能力", typeof(string));
  8. FinalTable.Columns.Add("廉洁自律", typeof(string));
  9. FinalTable.Columns.Add("工作成绩", typeof(string));
  10. for (int i = 0; i < YzOtherProgramEntity.Count; i++)
  11. {
  12. FinalTable.Columns.Add(YzOtherProgramEntity[i].AsscssProgram, typeof(string));
  13. }
  14. FinalTable.Columns.Add("总分", typeof(string));

然后是赋值:

  1. DataRow FileRow = FinalTable.NewRow();
  2. FileRow["教工号"] = scoresstaffid;
  3. FileRow["教职工姓名"] = staffname;
  4. FileRow["工作效率"] = staffscoresEntity[i].WorkEfficiency;
  5. FileRow["职业道德"] = staffscoresEntity[i].ProfessionalEthics;
  6. FileRow["业务能力"] = staffscoresEntity[i].BusinessAbility;
  7. FileRow["廉洁自律"] = staffscoresEntity[i].HonestyDiscipline;
  8. FileRow["工作成绩"] = staffscoresEntity[i].WorkPerformance;
  9.  
  10. if (YzOtherProgramEntity != null)
  11. {
  12. for (int j = 0; j < YzOtherProgramEntity.Count; j++)
  13. {
  14. Decimal othertotalscores = 0;
  15. Guid otherprogramEntityID = YzOtherProgramEntity[j].ID;
  16. IList<YzOtherScoresEntity> YzOtherScoresEntity = OtherScoresBLL.LoadEnities(u => u.CriticID == staffguid && u.Program == otherprogramEntityID && u.IsUsed == true).ToArray();
  17.  
  18. for (int k = 0; k < YzOtherScoresEntity.Count; k++)
  19. {
  20. othertotalscores = othertotalscores + YzOtherScoresEntity[k].Number;
  21. }
  22.  
  23. FileRow[YzOtherProgramEntity[j].AsscssProgram] = othertotalscores;
  24.  
  25. }
  26.  
  27. FileRow["总分"] = staffscoresEntity[i].TotalScores;
  28. FinalTable.Rows.Add(FileRow);

最后转json字符串:

  1. char[] specialChars = new char[] { ',' };
  2. string JSONstring = "[";
  3.  
  4. int index = 0;
  5. foreach (DataRow dr in FinalTable.Rows)
  6. {
  7. JSONstring += "{";
  8.  
  9. foreach (DataColumn dc in FinalTable.Columns)
  10. {
  11. JSONstring += "\"" + dc.ColumnName + "\":\"" + dr[dc].ToString() + "\",";
  12. }
  13. JSONstring = JSONstring.TrimEnd(specialChars);
  14. JSONstring += "},";
  15.  
  16. index++;
  17. }
  18. JSONstring = JSONstring.TrimEnd(specialChars);
  19. JSONstring += "]";
  20. return JSONstring;

然后前台进行接收,最后就可以做到动态加载列啦

结果:

【datagrid】动态加载列 2016-01-03 16:32 2013人阅读 评论(19) 收藏的更多相关文章

  1. hdu1171 Big Event in HDU(01背包) 2016-05-28 16:32 75人阅读 评论(0) 收藏

    Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  2. jquery easyui datagrid 动态 加载列

    实现方式: 首先根据输入的sql语句获得相关的列名称返回给前台,然后在datagrid中动态加载列,接着根据查询条件(包括sql语句)获取相关的记录返回给前台用于填充datagrid.从而实现类似or ...

  3. JAVA 对象数组,加载图片实例 分类: Java Game 2014-08-14 16:57 80人阅读 评论(0) 收藏

    主函数: package com.mywork; import java.awt.Color; import java.awt.Image; import javax.swing.ImageIcon; ...

  4. winform 解决界面闪动、提升加载速度 分类: WinForm 2015-02-03 16:34 161人阅读 评论(0) 收藏

    说明: 从一个技术交流群里获得,经验证效果不错. //作用 加快界面加载 protected override CreateParams CreateParams          {         ...

  5. EasyUI datagrid动态加载json数据

    最近做一个项目,要求是两张张表可能查找出10多种不同的结果集. 如果想只用一个表格就把全部的结果不同的显示出来那么就肯定不同使用固定的字段名字,要通过动态加载后台返回来的数据把它显示出来就必须动态加载 ...

  6. 百度地图-省市县联动加载地图 分类: Demo JavaScript 2015-04-26 13:08 530人阅读 评论(0) 收藏

    在平常项目中,我们会遇到这样的业务场景: 客户希望把自己的门店绘制在百度地图上,通过省.市.区的选择,然后加载不同区域下的店铺位置. 先看看效果图吧: 实现思路: 第一步:整理行政区域表: 要实现通过 ...

  7. 【第一篇】说说MVC+EF easyui dataGrid 动态加载分页表格

    首先上javascript的代码 <script type="text/javascript"> $(function () { LoadGrid(); }) //加载 ...

  8. 转 -- MVC+EF easyui dataGrid 动态加载分页表格

    首先上javascript的代码 <script type="text/javascript"> $(function () { LoadGrid(); }) //加载 ...

  9. easyui datagrid 动态加载数据 渲染问题,表格错位问题

    $('#dg').datagrid({ url:'datagrid_data.json', columns:[[ {field:'code',title:'Code',width:100}, {fie ...

随机推荐

  1. js 高亮显示关键字

    示例: var defaultEmphasisHandler = function(keyword, data){ var regex = RegExp("("+keyword.r ...

  2. 用canvas 画出圆形图片

    /** * 把图片处理成圆形,如果不是正方形就按最小边一半为半径处理 * @param {object} imgObj 图片(img)对象 * @param {number} imgType 设置生成 ...

  3. for循环遍历json(附习题及答案)

    三种方法 var mapColumn = { "vdoing" : "访问深度", "_visitorNumber": "访问量& ...

  4. 关于CE的反思

    当你注视着你的分数, 眼眶倏地猛睁. 不会做的题血红一片, 认真做了的题一点墨蓝. 你知道, 你CE了, 你挂了, 你倒数第一了, 你当场去世了. 两小时的努力付诸东流, 线段树的碎片历历在目. 思考 ...

  5. mac 终端 常用命令,MacOS 常用终端命令大全,mac 在当前目录打开终端

    MacOS 常用终端命令大全:目录操作dircmp——比较两个目录的内容——dircmp dir1 dir2文件操作pg分页格式化显示文件内容——pg filenameod——显示非文本文件的内容—— ...

  6. oracle之FUNCTION拙见

    一.介绍 函数(Function)为一命名的存储程序,可带参数(有无均可),有返回值 函数和过程的结构类似,但必须有一个RETURN子句,用于返回函数值. 函数说明要指定函数名.返回值的类型,以及参数 ...

  7. 2019-2-14-VisualStudio-通过外部调试方法快速调试库代码

    title author date CreateTime categories VisualStudio 通过外部调试方法快速调试库代码 lindexi 2019-2-14 22:1:37 +0800 ...

  8. python实例 列表

    #! /usr/bin/python # -*- coding: utf8 -*- #列表类似Javascript的数组,方便易用 #定义元组 word=['a','b','c','d','e','f ...

  9. Leetcode671.Second Minimum Node In a Binary Tree二叉树中的第二小结点

    给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值. 给出这样的一个二叉树,你需要输出所有节点中 ...

  10. 组合数取模(lucas定理+CRT合并)(AC)

    #include<bits/stdc++.h> #define re register #define int long long using namespace std; ; inlin ...