我创建了一个包含一些字段的jqGrid,例如:
job_id,名称等
我要做的是使得当点击job_id列中的值时,它会将它们重定向到:
job.php?job_id =(他们点击的值)
我开始尝试使用以下作为我的colModel:
{ name:'job_id', index:'job_id', edittype:'select', formatter:'showlink',
formatoptions:{baseLinkUrl:'job.php'}, width:50, align:'center' }
Run Code Online (Sandbox Code Playgroud)
但是这会导致重定向到:
job.php?JOB_ID =(ROW_ID)
我做了一些搜索,发现这个软件的开源版本开发人员的帖子建议使用以下colModel和其他JS:
{ name:'job_id', index:'job_id', edittype:'select', formatter:'showlink',
formatoptions:{baseLinkUrl:'#'}, width:50, align:'center' }
loadComplete: function() {
var myGrid = $("#home_list");
var ids = myGrid.getDataIDs();
for (var i = 0, idCount = ids.length; i < idCount; i++) {
$("#"+ids[i]+" a",myGrid[0]).click(function(e) {
var hash=e.currentTarget.hash;// string like "#?id=0"
if (hash.substring(0,5) === '#?id=') {
var id = hash.substring(5,hash.length);
var text = this.textContent;
location.href="job.php?id="+text;
}
e.preventDefault();
});
}
}
Run Code Online (Sandbox Code Playgroud)
但这与IE不兼容.除此之外,当在jqGrid中显示大量行时,加载需要很长时间,比如5秒+ …
我在这篇文章中找到了一个很好的方法来在javascript中对jqGrid列进行求和,如下所示:
var total = $('#grid_id').jqGrid('getCol','col_name',false,'sum');
Run Code Online (Sandbox Code Playgroud)
这很好,但我遇到的问题是我想要求和的列有时会有空格而不是数字,并且total上例中的变量返回NaN.
有谁知道如何调整这个功能,以便白色空间只是像零一样?
谢谢!
**更新**
正如Oleg在评论中指出的那样,你需要在colModel中使用格式化程序.一旦我把它formatter: 'number'放在我的colModel中,所有的空格都以零填充,它就可以工作了!请参阅示例代码:
$("#grid_id").jqGrid({
url:'ajax_script.php?sql=' + sql1,
height: 275,
shrinkToFit: true,
width: 800,
datatype: 'xml',
mtype: 'POST',
colNames:["Customer","Job", "Sched QNTY Sell","Sched Total Sell"],
colModel:[
{name:"Customer",index:"Customer",width:"16"},
{name:"JobNum",index:"JobNum",width:"16"},
{name:"Sched Qnty Sell",index:"Sched Qnty Sell",width:"20", formatter: 'number'},
{name:"Sched Total Sell",index:"Sched Total Sell",width:"20", formatter: 'number'}
],
rowNum:10000,
sortname: 'Customer',
sortorder: 'asc',
viewrecords: true,
gridview: true,
caption: 'Scheduled to Bill',
footerrow : true,
altRows : true,
gridComplete: function(){
$(this).jqGrid('footerData','set',{'Customer':'TOTALS:'});
var …Run Code Online (Sandbox Code Playgroud) 我已经填写了本网站上提出的每个问题,与填充jqGrid摘要页脚有关,而不是userdata是服务器请求.和jqGrid wiki资源,只是找不到答案.这可能吗?
我以许多典型的方式使用jqGrid作为我的管理门户的一部分,但有一个特别的用途,我希望jqGrid的外观和感觉开始作为一个空的UI容器的一些用户交互通过一个表单添加行发布提交(感谢Oleg下面的优秀脚本),但只需添加行并使用新添加的行中的值更新摘要页脚.我在colModel中有'summarytype:'sum"',"grouping:true",footerrow:true,userDataOnFooter:true,altRows:true,在网格选项中但是除了本地数据字符串中userdata提供的初始值之外,摘要页脚值永远不会改变.似乎没有人想触及这个主题.是因为jqGrid的主要特性是它的数据库驱动功能吗?我在其数据库驱动的站点中使用了大约15个jqGrid实例(其中许多都在生产服务中)但是为了一致性需要使用它(我的所有UI都在jqTabs中)最初作为没有服务器请求的客户端UI (所有内容将在稍后保存到db)但是我正在试图以编程方式操作摘要页脚并仅由客户端操作.任何人都可以建议如何在添加新行时更新摘要页脚的值,其中的值将与任何现有行相加,并且不涉及任何发布到服务器,只是网格内的更新?
提供的代码有点长,主要基于用户Oleg的解决方案,用于从模态表单添加行而不发布到服务器.我已经将本地数组数据更改为JSON字符串,以便更好地理解我习惯于xml的符号.jsonstring使用一个默认行初始化网格,供用户编辑.我遗漏了jsonReader,因为网格不会用它渲染.
简而言之,我想要做的是在向网格添加新行(此时没有发布到服务器)或编辑或删除时更新摘要页脚.当达到某组值时,显示的按钮会提示用户将行数据保存到db.
var lastSel, mydata = { "total": 1, "page": 1, "records": 1, "rows": [{ "id": acmid, "cell": ["0.00", "0.00", "0.00", "0.00"]}], "userdata":{ "mf": 0.00, "af":0.00,"pf":0.00,"cf":0.00 }}
grid = $("#ta_form_d"),
onclickSubmitLocal = function (options, postdata) {
var grid_p = grid[0].p,
idname = grid_p.prmNames.id,
grid_id = grid[0].id,
id_in_postdata = grid_id + "_id",
rowid = postdata[id_in_postdata],
addMode = rowid === "_empty",
oldValueOfSortColumn;
// postdata has row id property with another name. we fix it:
if (addMode) {
// …Run Code Online (Sandbox Code Playgroud) 我正在使用带有treegrid视图的jqgrid,并且大多数列是在树上聚合的数字.缺少的一个部分是总行来聚合顶级层次结构.有没有内置到jqgrid中的东西来支持这个或者应该传递给:
我想从dataEvents事件中检索用户输入的值.我想只允许数字0-24,如果用户插入一个像4,5(德语写作)的数字,我想用"."替换",".因此将"4,5"转换为"4.5".
但我正在努力获取用户输入的数据.我正在使用的方法总是返回空白.
colModel:[
{name:'sum',index:'sum', width:45, editable: true, sortable:false,
editoptions: { dataEvents: [
{
type: 'keypress', // keydown
fn: function(e) {
// console.log('keypress');
var v=$(e.target).text();
alert(v); // v is empty.
//reset the target value, actually I want to replace
// enter code here a comma with a point
// only allow the numbers 0 - 24
}
}
]
}
},
],
Run Code Online (Sandbox Code Playgroud)