我正在传递MVC模型进行查看,使用ID
填充隐藏字段,然后我需要相应的行突出显示以显示选择。
我已经以各种方式尝试setSelection
,没有一个正在运作。没有错误。以下是我尝试过的事情:
$("#computer-grid").jqGrid("setSelection", "3");
或
var hardwareId = $("#HardwareId").val();
$("#computer-grid").jqGrid("setSelection", hardwareId);
和loadComplete
:
loadComplete: function () {
$("computer-grid").setSelection(hardwareId, true);
}
并在loadComplete
调用外部函数:
loadComplete: function () {
showSelectedRow();
}
function showSelectedRow() {
var hardwareId = $("#HardwareId").val();
$("computer-grid").setSelection(hardwareId, false);
}
如果有其他选项,我不必使用setSelection
。我只想突出显示网格行hardwareId
不为空。
///// EDIT /////// 所需的其他信息:
我正在使用从trirand.com下载的jqGrid 4.8.2。 我在页面上有2个网格。
var computerGridUrl = $("#CpuFunctionUrl").val(); //window.GetCpuGridUrl();
var mobileGridUrl = $("#MobileFunctionUrl").val(); //window.GetMobileGridUrl();
$("#computer-grid").jqGrid({
url: computerGridUrl,
datatype: "json",
colNames: ['Id', 'Type', 'Model', 'Description', 'Price'],
colModel: [
{ name: "HardwareId", key: true, hidden: true },
{ name: "ItemType", sortable: true},
{ name: "Model", sortable: true },
{ name: "ItemDescription", width: 400 },
{ name: "Price", formatter: "currency", align: "center", sortable: true }
],
loadonce: true,
height: '200',
autowidth: true,
pager: "#cpu-grid-pager",
onSelectRow: function (id) {
SetDeviceId(id);
UnSelectRow("#mobile-grid");
},
loadComplete: function () {
showSelectedRow();
}
});
$("#mobile-grid").jqGrid({
url: mobileGridUrl,
datatype: "json",
colNames: ['Id', 'Type', 'Model', 'Description', 'Price'],
colModel: [
{ name: "HardwareId", key: true, hidden: true },
{ name: "ItemType" },
{ name: "Model", sortable: true},
{ name: "ItemDescription", width: 400 },
{ name: "Price", formatter: "currency", align: "center" }
],
loadonce: true,
height: '200',
autowidth: true,
pager: "#mobile-grid-pager",
onSelectRow: function (id) {
SetDeviceId(id);
UnSelectRow("#computer-grid");
}
});
function SetDeviceId(id) {
var deviceId = id;
if (deviceId > 0) {
$("#SelectedDevice").val(deviceId);
}
}
function UnSelectRow(gridName)
{
$(gridName).jqGrid("resetSelection");
}
function showSelectedRow() {
var hardwareId = $("#HardwareId").val();
$("computer-grid").setSelection(hardwareId);
}
/////////////////第二次编辑 - 添加json字符串响应/////////////////
这是填充网格的初始数据加载:
[{"HardwareId":1,"Model":"Latitude 14 7000","ItemDescription":"lightweight mobile computer","ItemType":"Lightweight Laptop","IsMobile":false,"IsMiFi":false,"Price":1254.00,"CellularPlan":null,"AppStoreId":null,"SelectedDevice":0,"RequestId":0},{"HardwareId":2,"Model":"Latitude E6540","ItemDescription":"A mobile computer","ItemType":"Standard Laptop","IsMobile":false,"IsMiFi":false,"Price":2096.00,"CellularPlan":null,"AppStoreId":null,"SelectedDevice":0,"RequestId":0},.....]
用户选择一行后,rowid将保存到" SelectedDevice"隐藏字段,在FORM中,然后提交给服务器。网格不在表单中。一切正常。
我现在正在做的是处理用户回到此页面时会发生什么。这个Web应用程序有6个视图,每个页面都有一个表单,有点像向导。如果用户返回该页面的网格,则服务器发送HardwareId,然后将其存储在隐藏字段'#HardwareId'中。我现在尝试的是,当网格填充时,它应该在HardwareId隐藏字段中查找值,如果有,则应突出显示网格中的相应行。
因此,在用户单击后退按钮后,此隐藏字段将获得一个值:
<input data-val="true" data-val-number="The field HardwareId must be a number." data-val-required="The HardwareId field is required." id="HardwareId" name="HardwareId" type="hidden" value="4" />
答案 0 :(得分:0)
似乎其中一些应该有效,不知道为什么。我注意到我的一些例子中缺少网格id调用中的井号(#),这导致了这个工作代码:
网格定义内:
loadComplete: function () {
showSelectedRow();
}
然后功能:
function showSelectedRow() {
var hardwareId = $("#HardwareId").val();
$("#computer-grid").jqGrid('setSelection', hardwareId);
}
立即工作。