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

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

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

代码如下:

view端:

//datagrid动态加载列
function getjson()
{
$.getJSON('/QueryScores/QueryOtherAssess', null, function (otherscores) {
var columns = new Array();
var column2 = {
field: '教工号', title: '教工号', width: 50
}
columns.push(column2);
var column3 = { field: '教职工姓名', title: '教职工姓名' }
columns.push(column3);
var column4 = { field: '工作效率', title: '工作效率', width: 50 }
columns.push(column4);
var column5 = { field: '职业道德', title: '职业道德', width: 50 }
columns.push(column5);
var column6 = { field: '业务能力', title: '业务能力', width: 50 }
columns.push(column6);
var column7 = { field: '廉洁自律', title: '廉洁自律', width: 50 }
columns.push(column7);
var column8 = { field: '工作成绩', title: '工作成绩', width: 50 }
columns.push(column8);
//导入其他分值的循环
for (var i = 0; i < otherscores.sum; i++) {
var column1={
field:otherscores.OtherScoresAssess[i],title:otherscores.OtherScoresAssess[i],width:70
}
columns.push(column1);
}
var column9 = { field: '总分', title: '总分', width: 50 }
columns.push(column9);
initTable(columns);
})
} function initTable(columns) {
$('#tt').datagrid({
title: '查看成绩',
url: '/QueryScores/QueryScoresIndex',
width: '100%',
rownumbers: true,
columns: [
columns
]
});
}

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

QueryOtherAssess:

public ActionResult QueryOtherAssess()
{
IList<string> OtherScoresAssess = OtherScoresAsscssProgramBLL.LoadEnities(u => u.IsUsed == true).Select(u => u.AsscssProgram).ToArray(); var OtherScoresAssessList = new
{
sum = OtherScoresAssess.Count(),
OtherScoresAssess = OtherScoresAssess
}; return Json(OtherScoresAssessList, JsonRequestBehavior.AllowGet); }

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

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

 //表头
DataTable FinalTable = new DataTable();
FinalTable.Columns.Add("教工号", typeof(int));
FinalTable.Columns.Add("教职工姓名", typeof(string));
FinalTable.Columns.Add("工作效率", typeof(string));
FinalTable.Columns.Add("职业道德", typeof(string));
FinalTable.Columns.Add("业务能力", typeof(string));
FinalTable.Columns.Add("廉洁自律", typeof(string));
FinalTable.Columns.Add("工作成绩", typeof(string));
for (int i = 0; i < YzOtherProgramEntity.Count; i++)
{
FinalTable.Columns.Add(YzOtherProgramEntity[i].AsscssProgram, typeof(string));
}
FinalTable.Columns.Add("总分", typeof(string));

然后是赋值:

 DataRow FileRow = FinalTable.NewRow();
FileRow["教工号"] = scoresstaffid;
FileRow["教职工姓名"] = staffname;
FileRow["工作效率"] = staffscoresEntity[i].WorkEfficiency;
FileRow["职业道德"] = staffscoresEntity[i].ProfessionalEthics;
FileRow["业务能力"] = staffscoresEntity[i].BusinessAbility;
FileRow["廉洁自律"] = staffscoresEntity[i].HonestyDiscipline;
FileRow["工作成绩"] = staffscoresEntity[i].WorkPerformance; if (YzOtherProgramEntity != null)
{
for (int j = 0; j < YzOtherProgramEntity.Count; j++)
{
Decimal othertotalscores = 0;
Guid otherprogramEntityID = YzOtherProgramEntity[j].ID;
IList<YzOtherScoresEntity> YzOtherScoresEntity = OtherScoresBLL.LoadEnities(u => u.CriticID == staffguid && u.Program == otherprogramEntityID && u.IsUsed == true).ToArray(); for (int k = 0; k < YzOtherScoresEntity.Count; k++)
{
othertotalscores = othertotalscores + YzOtherScoresEntity[k].Number;
} FileRow[YzOtherProgramEntity[j].AsscssProgram] = othertotalscores; } FileRow["总分"] = staffscoresEntity[i].TotalScores;
FinalTable.Rows.Add(FileRow);

最后转json字符串:

char[] specialChars = new char[] { ',' };
string JSONstring = "["; int index = 0;
foreach (DataRow dr in FinalTable.Rows)
{
JSONstring += "{"; foreach (DataColumn dc in FinalTable.Columns)
{
JSONstring += "\"" + dc.ColumnName + "\":\"" + dr[dc].ToString() + "\",";
}
JSONstring = JSONstring.TrimEnd(specialChars);
JSONstring += "},"; index++;
}
JSONstring = JSONstring.TrimEnd(specialChars);
JSONstring += "]";
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. Java中字符串为什么不以\0结尾

    Java中字符串为什么不以\0结尾 其实这个问题没有什么好说的,Java里面一切都是对象,是对象的话,字符串肯定就有长度,即然有长度,编译器就可以确定要输出的字符个数,当然也就没有必要去浪费那1字节的 ...

  2. Python学习(一) 安装,环境搭建,IDE

    第一篇废话太多了,我的博客最主要的是给自己看的,大家觉得还凑合也可以看看,能说自己想法的就更好了,因为一个人的思想是有局限性的.集思广益,自己的认知才不会被禁锢. 注:其他的系统没装,在Windows ...

  3. LUOGU P2587 [ZJOI2008]泡泡堂

    传送门 解题思路 刚开始先写了个田忌赛马的贪心,就是要是打不过就拿最弱的送死,30分...后来瞄了眼题解,发现这样是错的,比如说这样的数据 : 3 3 2 3 1 如果用田忌赛马的话,让2-3 3-1 ...

  4. Laravel 安装mysql、表增加模拟数据、生成控制器

    参考中文网教程: 安装mysql.表增加模拟数据 http://www.golaravel.com/post/2016-ban-laravel-xi-lie-ru-men-jiao-cheng-yi/ ...

  5. AutoDesk产品,Maya 2018 安装,Microsoft Visual C++ 2012 安装失败,结果 = -2147024546,安装Microsoft Visual C++ 2012 Redistributable 错误0x80070005 等等

    今日老弟装Maya 2018出现问题,我帮忙解决了一下问题,过程颇为曲折,记录一下,看能否帮到有类似困惑的朋友. 我和老弟的电脑牌子一样,就现在自己电脑上装了,竟然开始和他的错误是一样的!都是Micr ...

  6. Centos 下添加开机自启动服务和脚本【转】

    最近刚玩Centos7的系统,跟Centos6还是很多方面有改变的,这里记录一下怎么在Centos7下添加开机自启动脚本和服务的方法. 1.添加开机自启服务 我这里以docker 服务为例,设置如下两 ...

  7. 在一个已经使用mybatis的项目里引入mybatis-plus,结果不能共存

    mybatis-plus版本号:3.0.6 问题产生原因: 原有的项目使用的是springboot+mybatis的框架,一切接口服务均没有问题.由于新的需求增加shiro权限认证,然后也在考虑用my ...

  8. 【水滴石穿】RNNewsGo

    项目地址为:https://github.com/ImVeryGood/RNNewsGo 我们先来看一下页面 分析了一下项目,项目也是有用到redux-saga的 然后模块比较清晰 接下来我们分析代码 ...

  9. 【机器学习PAI实战】—— 玩转人工智能之你最喜欢哪个男生?

    摘要: 分类问题是生活中最常遇到的问题之一.普通人在做出选择之前,可能会犹豫不决,但对机器而言,则是唯一必选的问题.我们可以通过算法生成模型去帮助我们快速的做出选择,而且保证误差最小.充足的样本,合适 ...

  10. Ubuntu无法连接无线网

    shell里输入: su ifconfig wlan0 up 不行的话 rfkill block all rfkill unblock all ifconfig wlan0 up