前言
JQGrid是一个在jquery基础上做的一个表格控件,以ajax的方式和服务器端通信。
在表格中常常需要调整表格中数据的显示顺序,我用的是jqgrid,实现原理就是将表中的行数保存到数据库中,取数据时按行进行排序
下面话不多说了,来一起看看详细的介绍吧
jqgrid上移下移单元格
1、上移,下移按钮
<a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" onclick="operateWithOneRowById(up)" class="linkButton">上移</a> <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" 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 == 1) 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 == -1) 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 = 0; i < ids.length; i++) {
if (selId == ids[i] && method == "up") {
if (i == 0) return -1;
else return ids[i - 1];
}
if (selId == ids[i] && method == "down") {
if (i == ids.length - 1) return -1;
else return ids[i + 1];
}
}
}
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 = 0; i < list.Count; i++)
{
PlanPerson item = list[i];
if (item.ID != 0)
{
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;
}
至此,表格中数据的上移下移就完成了。
总结:
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新动态
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]