一、HTML代码

 <table id="dg" class="easyui-datagrid" style="width: 100%; height: 400px;" data-options="">
<thead>
<tr>
<th data-options="field:'DeviceId',checkbox:true"></th>
<th data-options="field:'DeviceName', width:120,align:'center'" >名称</th>
<th data-options="field:'DeviceUnitName', width:80,align:'center'">单位</th>
<th data-options="field:'MakePlace', width:120,align:'center'">产地</th>
  <th data-options="field:'OriginalValue',width:90,align:'center'">资产原值</th>
<th data-options="field:'BuyTime', width:120,align:'center'">购置日期</th> </tr>
</thead>
</table>

二、JS代码:showFooter: true,代表grid添加总合计行。

 $(".easyui-datagrid").datagrid({
rownumbers: true,
singleSelect: false,
fitColumns: false,
idField: 'DeviceId',
method: 'post',
url: '/Admin/Report/DeviceDetialListSearch',
remoteSort: false,
multiSort: false,
showFooter: true,
pagination: true,
pageSize: ,
pageList: [,,],
queryParams: {
'DeviceIdList':"",
'DeviceName':$("#DeviceName").combobox('getValue'), },
onLoadSuccess: function () {
//$("#dg").datagrid('clearChecked');//清除复选框
//$("#dg").datagrid('load');
}
});

三、后台Controller函数 DeviceDetialListSearch(); StringBuilder jsonBuilder 就是要添加的Footer。和分页一起整合成Json传到前台datagrid,会自动识别。PageCount 是当前页行数,PageValues就是当前页 原值那一列 OriginalValue的总合计。SearchForDetail()求得是当前页的数据。SearchForDetailSum()求得是总合计。

  public ActionResult DeviceDetialListSearch()
{
DataTable dt = new DataTable();
FADeviceInfoModel InfoModel = new FADeviceInfoModel();
string DeviceIdList = Request["DeviceIdList"]; int pageSize = int.Parse(Request["rows"]);
int nowPage = int.Parse(Request["page"]);
int recordCount = ; //搜索条件下的总记录数量
dt = InfoModel.SearchForDetail(pageSize, nowPage, out recordCount, DeviceIdList,Request["DeviceName"]);
//当前页统计
string PageValues = "";
int PageCount = ;
if (dt != null)
{
PageValues = dt.Compute("Sum(OriginalValue)", "").ToString();
PageCount = dt.Rows.Count;
} DataTable DtTotal = InfoModel.SearchForDetailSum(DeviceIdList,Request["DeviceName"]); StringBuilder jsonBuilder = new StringBuilder();
# region 当前页总合计
jsonBuilder.Append("{");
jsonBuilder.Append("\"");
jsonBuilder.Append("DeviceName");
jsonBuilder.Append("\":\"");
jsonBuilder.Append("当前页总合计");
jsonBuilder.Append("\","); jsonBuilder.Append("\"");
jsonBuilder.Append("DeviceUnitName");
jsonBuilder.Append("\":\"");
jsonBuilder.Append("数量");
jsonBuilder.Append("\","); jsonBuilder.Append("\"");
jsonBuilder.Append("MakePlace");
jsonBuilder.Append("\":\"");
jsonBuilder.Append(PageCount);
jsonBuilder.Append("\","); jsonBuilder.Append("\"");
jsonBuilder.Append("OriginalValue");
jsonBuilder.Append("\":\"");
jsonBuilder.Append("原值");
jsonBuilder.Append("\","); jsonBuilder.Append("\"");
jsonBuilder.Append("BuyTime");
jsonBuilder.Append("\":\"");
jsonBuilder.Append(PageValues);
jsonBuilder.Append("\"");
jsonBuilder.Append("},");
#endregion #region 总合计
jsonBuilder.Append("{");
jsonBuilder.Append("\"");
jsonBuilder.Append("DeviceName");
jsonBuilder.Append("\":\"");
jsonBuilder.Append("总合计");
jsonBuilder.Append("\","); jsonBuilder.Append("\"");
jsonBuilder.Append("DeviceUnitName");
jsonBuilder.Append("\":\"");
jsonBuilder.Append("数量");
jsonBuilder.Append("\","); jsonBuilder.Append("\"");
jsonBuilder.Append("MackePlace");
jsonBuilder.Append("\":\"");
jsonBuilder.Append(DtTotal.Rows[]["SumCount"]);
jsonBuilder.Append("\","); jsonBuilder.Append("\"");
jsonBuilder.Append("OriginalValue");
jsonBuilder.Append("\":\"");
jsonBuilder.Append("原值");
jsonBuilder.Append("\","); jsonBuilder.Append("\"");
jsonBuilder.Append("BuyTime");
jsonBuilder.Append("\":\"");
jsonBuilder.Append(DtTotal.Rows[]["SumOriginalValue"]);
jsonBuilder.Append("\"");
jsonBuilder.Append("}");
#endregion return Content(MyJson.DataTableToJsonByPage(dt, recordCount, jsonBuilder.ToString()));
}

四、Model函数:SearchForDetail()求得是当前页的数据。

  public DataTable SearchForDetail(int pageSize, int nowPage, out int recordCount, string DeviceIdList, string DeviceName)
{
string sqlCondition = " ";
if (DeviceIdList != null && !DeviceIdList.Equals(""))
sqlCondition += " and FADeviceInfo.DeviceId not in (" + DeviceIdList + ")";
if (DeviceName != null && !DeviceName.Equals(""))
sqlCondition += " and (FADeviceInfo.DeviceName like '%" + DeviceName + "%' or FADeviceInfo.DeviceInputCode like '%" + DeviceName + "%')"; string sqlOn = " left join FADepartment on FADeviceInfo.DepartmentId=FADepartment.DepartmentId ";
sqlOn += " left join FADeviceUnit on FADeviceInfo.DeviceUnitId=FADeviceUnit.DeviceUnitId "; string sqlOrder = " order by DeviceId desc ";
string sqlResult = " DeviceId,DeviceStatus,DeviceCode,DeviceName,DepartmentName,DeviceSpec,DeviceUnitName,OriginalValue,MakePlace,BuyTime,FinancialCode "; string sqlSon = "(select top " + (nowPage - ) * pageSize + " DeviceId from FADeviceInfo " + sqlOn + " where 1 = 1 " + sqlCondition + sqlOrder + ")";
string sql = " select top " + pageSize + sqlResult + " from FADeviceInfo " + sqlOn + " where DeviceId not in " + sqlSon + sqlCondition + sqlOrder;
string sqlCount = "select count(*) from FADeviceInfo " + sqlOn + " where 1 = 1 " + sqlCondition; DataTable dataTable = new DataTable();
dataTable = db.MyExecuteQuery(sql);
recordCount =db.GetCount(sqlCount);
return dataTable;
}

SearchForDetailSum()求得是总合计。

 public DataTable SearchForDetailSum(string DeviceIdListe, string DeviceName)
{
string sqlCondition = " 1=1 ";
if (DeviceIdList != null && !DeviceIdList.Equals(""))
sqlCondition += " and FADeviceInfo.DeviceId not in (" + DeviceIdList + ")";
if (DeviceName != null && !DeviceName.Equals(""))
sqlCondition += " and (FADeviceInfo.DeviceName like '%" + DeviceName + "%' or FADeviceInfo.DeviceInputCode like '%" + DeviceName + "%')"; string sql = " select sum(OriginalValue) as SumOriginalValue,count(*) as SumCount from FADeviceInfo " +
" left join FADepartment on FADeviceInfo.DepartmentId=FADepartment.DepartmentId " +
" left join FADeviceUnit on FADeviceInfo.DeviceUnitId=FADeviceUnit.DeviceUnitId " +
" where " + sqlCondition; DataTable dataTable = new DataTable();
dataTable = db.MyExecuteQuery(sql);
return dataTable;
}

五、table转Json函数:参数Footer 就是在 Controller :DeviceDetialListSearch()函数里拼接的stringBuilder,总合计和当前页合计要怎么写怎么统计,可以自己去拼接,然后传到转换函数里来。

 public static string DataTableToJsonByPage(DataTable dt, int total, string footer)
{
StringBuilder jsonBuilder = new StringBuilder();
//添加表格总行数
jsonBuilder.Append("{\"total\":" + total + ",\"rows\":");
//添加行数据
jsonBuilder.Append("[");
for (int i = ; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = ; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[j].ColumnName);
jsonBuilder.Append("\":\"");
jsonBuilder.Append(dt.Rows[i][j].ToString());
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - , );
jsonBuilder.Append("},");
}
if (dt.Rows.Count != )
{
jsonBuilder.Remove(jsonBuilder.Length - , );
}
jsonBuilder.Append("]");
//添加Footer
jsonBuilder.Append(",\"footer\":[");
jsonBuilder.Append(footer);
jsonBuilder.Append("]}"); jsonBuilder = jsonBuilder.Replace("\n", "").Replace("\r", "");
return jsonBuilder.ToString();
}

六丶看看效果图

ASP.NET MVC easyUI-datagrid 的当前页合计and总合计的更多相关文章

  1. asp.net mvc easyui datagrid分页

    提到 asp.net mvc 中的分页,很多是在用aspnetpager,和easyui datagrid结合的分页却不多,本文介绍的是利用easyui 中默认的分页控件,实现asp.net mvc分 ...

  2. Asp.Net MVC EasyUI DataGrid查询分页

    function doSearch() { //查询方法 var searchValue = $('#txtQueryTC001').textbox('getText'); $('#dgCMSTC') ...

  3. jquery easyui datagrid 加每页合计和总合计

    jquery easyui datagrid 加每页合计和总合计 一:效果图 二:代码实现 这个只有从后台来处理 后台根据rows 和page两个参数返回的datatable 命名为dt 然后根据dt ...

  4. ASP.NET MVC+EasyUI+Entity FrameWork 整合开发

    本文详细讲解怎么用ASP.NET MVC+EasyUI+Entity FrameWork 来开发一个项目 对于ASP.NET MVC的Jscript库,主要引用 <script type=.mi ...

  5. ASP.NET MVC +EasyUI 权限设计(二)环境搭建

    请注明转载地址:http://www.cnblogs.com/arhat 今天突然发现博客园出问题了,老魏使用了PC,手机,平板都访问博客园了,都是不能正常的访问,原因是不能加载CSS,也就是不能访问 ...

  6. ASP.NET MVC +EasyUI 权限设计(一)开篇

    在前一段时间中,老魏的确非常的忙碌,Blog基本上没有更新了,非常的抱歉,那么在后面的时间中,老魏会尽量的抽时间来写的,可能时间上就不太富裕了.今天开始呢,老魏会和大家分享一下关于权限设计的有关文章, ...

  7. 对Spring.Net+NHibenate+Asp.Net Mvc+Easyui框架的个人认识

    对Spring.Net+NHibenate+Asp.Net Mvc+Easyui框架的个人认识   初次接触Spring.Net+NHibenate+Asp.Net Mvc+Easyui框架,查阅了相 ...

  8. Spring.Net+NHibenate+Asp.Net Mvc+Easyui框架

    Spring.Net+NHibenate+Asp.Net Mvc+Easyui框架 初次接触Spring.Net+NHibenate+Asp.Net Mvc+Easyui框架,查阅了相关资料,了解了框 ...

  9. asp.net mvc +easyui 实现权限管理(二)

    一写完后,好久没有继续写了.最近公司又在重新开发权限系统了,但是由于我人微言轻,无法阻止他们设计一个太监版的权限系统.想想确实是官大一级压死人啊, 没办法我只好不参与了 让他们去折腾. 我就大概说一下 ...

随机推荐

  1. 剑指offer——74求1+2+3+n

    题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C).   题解: 利用类的构造和析构 //利用类的构 ...

  2. Vuex篇

    [Vuex篇] vuex源码你学会了吗? 我来免费教你!~ 1.vuex是什么?  Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的 ...

  3. 关于py中lxml模块的cssselect的小问题

    今天在使用lxml进行解析页面的时候遇到了不能解析空格的问题,就是类似于: <div class="aa bb"></div> 使用cssselect('. ...

  4. Linux编程获取本机IP地址

    使用函数getifaddrs来枚举网卡IP,当中使用到的结构体例如以下所看到的: struct ifaddrs { struct ifaddrs *ifa_next; /* Next item in ...

  5. ABP 3.7版本迁移数据库报错未能加载文件或程序集“Castle.Core, Version=4.0.0.0”

    ABP 3.7 3.8版本升级后迁移数据库,报错未能加载文件或程序集“Castle.Core, Version=4.0.0.0”,System.ComponentModel.Annotations也可 ...

  6. mongodb入门篇

    MongoDB 入门篇 分类: NoSQL, 故障解决 undefined 1.1 数据库管理系统 在了解MongoDB之前需要先了解先数据库管理系统 1.1.1 什么是数据? 数据(英语:data) ...

  7. 笔记-ubuntu中/home下中文目录改英文

    安装ubuntu后,如果选择的语言是中文,那/home下的文件夹会默认中文,在使用命令行的时候很不方便,此文记录切换成英文的方式,以便日后查看. 将目录重命名为英文 可以使用图形化界面,直接重命名 可 ...

  8. 安装php 在阿里云yum源的环境

    yum -y install httpd mysql mysql-server php php-mysql postgresql postgresql-server php-postgresql ph ...

  9. NX二次开发-如何判断孔特征和边倒圆是否在凸台特征后面?

    在建模的时候,部件导航器里的特征按建模顺序是有特征时间戳记的. 我们可以根据特征时间戳记的名字来判断哪个特征在前,哪个在后. #include <uf.h> #include <uf ...

  10. VS开发工具的常用插件【转载】

    文章转载自https://www.cnblogs.com/huntergu/p/8337266.html