我使用以下代码绑定jqgrid中的值。
我创建了一个链接按钮来访问“特殊操作方法”。
我需要将firstcolumn值传递给action方法。
但是,如果我使用下面的href ='@ Url.Action(“ ViewApplicants”,“ HR”)?JobsID =“ + rowObject [0] +”'。它显示未定义的值。如何解决此问题?
<div>
<table id="Jobtable"></table>
<div id="jQGridPager"></div>
<div id="dialog" title="View Job Detail"></div>
</div>
<script type="text/javascript">
$(document).ready(function () {
$("#Jobtable").jqGrid({
url: '/HR/PassJsonJob/',
datatype: "json",
mtype: 'GET',
colNames: ['Job ID', 'Job Title', 'Job Experience', 'Job Location', 'ViewApplicants'],
colModel: [
{ name: 'JobsID', index: 'JobsID', width: 150, align: 'left', editable: true },
{ name: 'JobTitle', index: 'JobTitle', width: 150, align: 'left', editable: true },
{ name: 'JobExperience', index: 'JobExperience', width: 150, align: 'left', editable: true },
{ name: 'JobLocation', index: 'JobLocation', width: 150, align: 'left', editable: true },
{
name: 'ViewApplicants', index: 'ViewApplicants', width: 150, sortable: false,
formatter: function (cellvalue, options, rowObject) {
alert(rowObject)
return "<a href='@Url.Action("ViewApplicants", "HR")?JobsID="+rowObject[0]+"'>View Applicants</a>";
}
}
],
rowNum: 10,
rowList: [10, 20, 30],
viewrecords: true,
loadonce: true,
gridview: true,
pager: "#jQGridPager",
cellEdit: false,
rowNumbers: true,
width: 1000,
caption: 'Applied Jobs',
viewrecords: true
})
$('#Jobtable').jqGrid('navGrid', '#jQGridPager',
{
edit: true,
add: false,
del: false,
view: false,
search: false
});
});
</script>
最佳答案
从URL /HR/PassJsonJob/
了解服务器响应的格式很重要。 rowObject
的格式与服务器响应中项目的格式相对应。因此,可能是rowObject.JobsID
而不是rowObject[0]
将纠正访问JobsID
属性的方法。因为您使用loadonce: true
,所以在第一次加载时rowObject
的格式可能是rowObject[0]
。稍后,例如,在本地分页或数据排序时,rowObject
的格式将是具有JobsID
属性的对象,因此rowObject.JobsID
是正确的。
因此,使用rowObject.JobsID
或rowObject[0] || rowObject.JobsID
可以解决您的问题。
另一种选择是在key: true
的JobsID
列的定义中使用属性colModel
。仅当JobsID
每行包含唯一值时,才可以使用该属性。在这种情况下,jqGrid将使用JobsID
列中的值作为rowid:分配给网格的行(id
元素)的<tr>
属性的值。在这种情况下,可以使用options.rowId
访问JobsID
值。
更新:自2014年以来我开发的free jqGrid分支中存在另一个选项。自定义格式程序的二维参数(options
)具有属性rowData
,其中包含与rowObject
相同的信息>,但始终具有对象格式。因此,使用options.rowData.JobsID
代替rowObject[0] || rowObject.JobsID
是安全的。根本不需要使用自定义格式化程序的3-d参数。免费的jqGrid并未更改3-d参数的格式,以使其与先前版本的jqGrid具有最佳的向上兼容性。