我在页面上放了一个jqgrid。在Jqgrid中,当用户单击列时放置了我想要的列,当我单击所需的列时填充其他Jqgrid.Now。只有第一次填充第二个JQGrid,但下次服务器端代码将无法运行。 代码编写如下
var firstButtonColumnIndex = 0;
grid = $('#list'); buttonNames = {};
grid.jqGrid({
url: 'jQGridHandler.ashx?Request=1',
loadonce: true,
direction: "rtl",
pgtext: "صفحه {0} از {1}",
datatype: 'json',
height: 250,
colNames: ['شماره درخواست', 'شماره اموال', 'شرح دستور کار', 'تاریخ دستور کار', 'زمان دستور کار', 'ملاحظات', '', ''],
colModel: [
{ name: 'WorkOrderNo', width: 100, sortable: true },
{ name: 'AssetNo', width: 100, sortable: true },
{ name: 'WorkDescription', width: 400, sortable: true },
{ name: 'WorkOrderDate', width: 80, sortable: true },
{ name: 'WorkOrderTime', width: 80, sortable: true },
{ name: 'Remark', width: 100, sortable: true },
{ name: 'del', width: 20, sortable: false, search: false,
formatter: function () {
return "<span class='ui-icon ui-icon-trash'></span>";
}
},
{ name: 'details', width: 20, sortable: false, search: false,
formatter: function () {
return "<span class='ui-icon ui-icon-document'></span>";
}
}
],
gridview: true,
rowNum: 10,
rowList: [10, 20, 30],
pager: '#pager',
// sortname: 'WorkOrderNo',
viewrecords: true,
sortorder: 'asc',
caption: 'درخواست ها...........',
rownumbers: true,
beforeSelectRow: function (rowid, e) {
var iCol = $.jgrid.getCellIndex(e.target);
if (iCol == 7) {
//alert("rowid=" + rowid + "\nButton name: " + buttonNames[iCol]);
// $('img').each(function () {
$("#workRequestPopUp").draggable();
// });
} else if (iCol == 8) {
workOrderId = rowid;
$("#tblRequestWorks tr").remove();
$("#tblRequestWorks").jqGrid({
// url: 'jQGridHandler.ashx?RequestWorksFill=1&workOrderId=' + workOrderId,
url: "PublicHandler.ashx?Request=1&workOrderId: rowid",
direction: "rtl",
pgtext: "",
datatype: 'json',
height: 250,
colNames: ['نام کار', 'نام واحد', 'سرپرست واحد', 'تعداد', 'پایان کار', ''],
colModel: [
{ name: 'WorkName', width: 300, sortable: true },
{ name: 'SectionName', width: 100, sortable: true },
{ name: 'SectionSupervisor', width: 100, sortable: true },
{ name: 'RequestCount', width: 80, sortable: true },
{ name: 'FinishWork', width: 100, sortable: true },
{ name: 'details', width: 20, sortable: false, search: false,
formatter: function () {
return "<span class='ui-icon ui-icon-document'></span>";
}
}
],
rowNum: 10,
rowList: [10, 20, 30],
sortorder: 'asc',
caption: 'Test',
rownumbers: true,
beforeSelectRow: function (rowid, e) {
var iCol = $.jgrid.getCellIndex(e.target);
if (iCol == 6) {
alert(rowid);
Fill12(rowid);
} else if (iCol == 8) {
alert(rowid);
Fill12(rowid);
return true;
// return (iCol >= firstButtonColumnIndex) ? false : true;
}
},
dataType: "json"
});
// fillRequestWorkPopup(workOrderId);
popup(e);
}
// prevent row selection if one click on the button
// return (iCol >= firstButtonColumnIndex) ? false : true;
return true;
}
});
JQGrid中的tr是委托函数吗? 我尊敬的教授可以提供帮助。谢谢所有
答案 0 :(得分:1)
网址"PublicHandler.ashx?Request=1&workOrderId: rowid"
似乎我错了。你的意思是"PublicHandler.ashx?Request=1&workOrderId=" + rowid
吗?最好的方法是将url: "PublicHandler.ashx"
与postData: {Request: 1, workOrderId: rowid}
一起使用。
下一个问题是使用$("#tblRequestWorks tr").remove();
。您没有包含在页面上使用的任何HTML代码。如果您想销毁旧网格并在同一个地方创建一个新网格,则应使用GridUnload代替$("#tblRequestWorks tr").remove();
:$("#tblRequestWorks").jqGrid('GridUnload');
(请参阅here和示例)。< / p>
您也可以从代码中删除dataType: "json"
。 jqGrid不知道该选项,您已经使用了正确的datatype: "json"
选项。
我认为您可以更改代码,以便不需要使用GridUnload。只更改第二个网格($("#tblRequestWorks")
)的某些参数并使用$("#tblRequestWorks").trigger('reloadGrid', [{page: 1}]);
重新加载它似乎已经足够了。
还有一句话:你应该非常小心第二个网格的id
值。不允许在页面上具有id重复项。如果您无法在服务器上生成唯一ID,则可以考虑使用网格的idPrefix
选项。