jqgrid 上移下移单元格
在表格中常常需要调整表格中数据的显示顺序,我用的是jqgrid,实现原理就是将表中的行数保存到数据库中,取数据时按行进行排序
1、上移,下移按钮
<a href="javascript:void(0)" onclick="operateWithOneRowById(up)" class="linkButton">上移</a>
<a href="javascript:void(0)" onclick="operateWithOneRowById(down)" class="linkButton">下移</a>
2、上移下移 功能
function operateWithOneRowById(callback) {
var selected = tableObj.jqGrid('getGridParam', 'selrow');
if (selected == null) {
alert("请用鼠标点击选择一行后再执行操作!");
return;
}
return callback(selected);
}
3、这里的callback是up和down 函数的合并,那么我们再看看这两个函数
function up(selected) {
if (selected == ) return;
else {
gridHelper.moveRow("up", tableObj);
}
} function down(selected) {
gridHelper.moveRow("down", tableObj);
}
4、在这个函数中,我们都调用了一个函数movRow() 让我们来看看这个函数,这个函数的原理就是把当前选中的行和我要移到至的行进行交换就行了。
//移动一行
this.moveRow = function(moveMethod, grid) {
if (grid) tableObj = grid;
var id;
// if(selRow) id=selRow;
// else id = getSelRow();
id = this.getSelRow();
tableObj.restoreRow(id);
if (id == null) return;
var targetId = this.getTargetId(id, moveMethod)
if (targetId == -) return; var temp1 = tableObj.getRowData(id);
var temp2 = tableObj.getRowData(targetId);
//对调行号
var tempRn = temp1.rn;
temp1.rn = temp2.rn;
temp2.rn = tempRn;
//对调数据
tableObj.setRowData(id, temp2);
tableObj.setRowData(targetId, temp1);
tableObj.setSelection(targetId);
}
5、在4中调用了getTargetId()方法,我们再来看看这个方法
//取得上移时的上一行的id,或下移时的下一行的id
this.getTargetId = function(selId, method, grid) {
if (grid) tableObj = grid;
var ids = tableObj.getDataIDs();
for (var i = ; i < ids.length; i++) {
if (selId == ids[i] && method == "up") {
if (i == ) return -;
else return ids[i - ];
}
if (selId == ids[i] && method == "down") {
if (i == ids.length - ) return -;
else return ids[i + ];
}
}
}
6、增加数据库字段Sequence 我用的nhibernate 还要在配置文件中进行修改,增加一行<property name="Order" column="Sequence"></property> 实体类中增加字段 order,在保存表时保存表中的行号
保存数据说明:保存时是保存表中的所有数据,有已经在数据库中的数据,有没有存在数据库中的数据,根据IDj是否为0来判断的。
public void UpdatePlan(PlanToReport plan, List<PlanPerson> list)
{
NHibernate.ISession session = NHibernateSessionManager.Instance.GetSession();
try
{
PlanToReportService.UpdatePlan(plan);
for (int i = ; i < list.Count; i++)
{
PlanPerson item = list[i];
if (item.ID != )
{
PlanPerson itemnew = PlanToReportService.GetPlanPersonById(item.ID);
itemnew.JobName = item.JobName;
itemnew.ApprovalResults = item.ApprovalResults;
itemnew.Attachments = item.Attachments;
itemnew.CountryCode = item.CountryCode;
itemnew.CountryName = item.CountryName;
itemnew.MissionType = item.MissionType;
itemnew.Position = item.Position;
itemnew.Remark = item.Remark;
itemnew.StartDate = item.StartDate;
itemnew.Status = item.Status;
itemnew.Explain = item.Explain;
itemnew.Order = i;
PlanToReportService.AddNewPlanPerson(itemnew);
}
else
{
item.PlanID = plan.ID;
item.Order = i;
PlanToReportService.AddNewPlanPerson(item);
} }
session.Transaction.Commit();
}
catch (Exception ep)
{
session.Transaction.Rollback();
throw ep;
}
}
7、取数据时根据 Order 字段进行排序
public List<PlanPersonShowInGrid> GetShowPersonInPlan(int planID)
{
ISession session = NHibernateSessionManager.Instance.GetSession();
ICriteria criteria = session.CreateCriteria(typeof(PlanPersonShowInGrid));
criteria.Add(Expression.Eq("PlanID", planID)).AddOrder(Order.Asc("Order"));
List<PlanPersonShowInGrid> list = new List<PlanPersonShowInGrid>();
try
{
IList l = criteria.List();
list = PlanToReportDao.IListToList<PlanPersonShowInGrid>(l);
}
catch { }
return list;
}
至此,表格中数据的上移下移就完成了。
jqgrid 上移下移单元格的更多相关文章
- jqgrid cellEdit为true的时候,默认选中单元格值的解决方案
jqgrid cellEdit为true的时候,点击单元格的时候,鼠标在单元格最前面闪. 这时候如果要修改数字内容,非常麻烦.要全选单元格内容,不然不好改. 点击单元格的时候,默认选中单元格值的解决方 ...
- JQ完成表格单元格顺序的上移下调
如有指教及疑问,欢迎留言 HTML代码 <table class="exampletable"> <thead> <tr> <th> ...
- jqgrid 设置单元格编辑/不可编辑
首先设置不可编辑,如下代码: $(', 'not-editable-cell'); 在单元格上设置一个'not-editable-cell'就可以了,如果需要设置为可编辑,那么可以使用下面的代码: f ...
- jqgrid单元格设置空值的方法
项目中使用jqgrid,在使用的场景下经常需要清空单元格内容,于是使用了下面的代码: $("#jqgrid1").jqGrid('setCell',rowId, 'column', ...
- jqgrid设置单元格数据
$("#gridid").jqGrid('setCell',rowid,icol,data); rowid为行ID,jqgrid内置的那个,从1开始 icol为列索引,从0开始, ...
- jqGrid合并单元格
两个参数 /**合并单元格:合并指定 gridName表格的NoName 列,合并的标准是参考CellName+CellNameTwo列内单元格的值. * gridName :表格名称 * NoNam ...
- jqGrid 清空单元格的方法
在工作中,使用到jqGrid的场景是比较多的. 今天在工作中遇到了一个jqGrid的问题,当将单元格的值设置成 '' 空字符串的时候,竟然不会修改成功. $("#mygrid"). ...
- jqgrid单元格合并
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...
- jqGrid单元格编辑配置,事件及方法
转自 http://blog.csdn.net/xueshijun666/article/details/18151055 // var ret = $("#in_store_list_de ...
随机推荐
- angular 子路由
const routes: Routes = [ { path: '', redirectTo: '/home', pathMatch: 'full' }, { path: 'home', compo ...
- poj2154(polya定理+欧拉函数)
题目链接:http://poj.org/problem?id=2154 题意:n 种颜色的珠子构成一个长为 n 的环,每种颜色珠子个数无限,也不一定要用上所有颜色,旋转可以得到状态只算一种,问有多少种 ...
- mybatis 学习笔记(四):mybatis 和 spring 的整合
mybatis 学习笔记(四):mybatis 和 spring 的整合 尝试一下整合 mybatis 和 spring. 思路 spring通过单例方式管理SqlSessionFactory. sp ...
- 【BZOJ1853】[Scoi2010]幸运数字 容斥原理+搜索
Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,666,88 ...
- 洛谷P1251 餐巾计划问题(费用流)
传送门 不得不说这题真是思路清奇,真是网络流的一道好题,完全没想到网络流的建图还可以这么建 我们把每一个点拆成两个点,分别表示白天和晚上,白天可以得到干净的餐巾(购买的,慢洗的,快洗的),晚上可以得到 ...
- [Swift]八大排序算法(八):基数排序
排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...
- zabbix 3.0 快速安装文档
下载地址:http://www.zabbix.com/download.php 官方文档:https://www.zabbix.com/documentation/3.0/manual/install ...
- 根据枚举获取枚举的Description特性值
首先定义一个枚举:两个值:已确认.未确认. public enum ConfirmStatusEnum { [Description("未确认")] unconfirmed = , ...
- opencv学习笔记(五)----图像的形态学操作
图像的形态学操作有基本的腐蚀和膨胀操作和其余扩展形态学变换操作(高级操作)-----开运算,闭运算,礼帽(顶帽)操作,黑帽操作...(主要也是为了去噪声,改善图像) 形态学操作都是用于处理二值图像(其 ...
- 使用过多的递归出现错误,“System.StackOverflowException”类型的未经处理的异常在 mscorlib.dll 中发生
class Program { static void Main(string[] args) { sub(0); } private static void sub(int count) { ...