Jquery jqGrid SETSELECT未突出显示行加载
我将MVC模型传递给视图,用Jquery jqGrid SETSELECT未突出显示行加载,jquery,jqgrid,jqgrid-asp.net,Jquery,Jqgrid,Jqgrid Asp.net,我将MVC模型传递给视图,用ID填充一个隐藏字段,然后我需要相应的行高亮显示以显示选择 我尝试过各种方法,但没有一种有效。没有错误。以下是我尝试过的东西: $("#computer-grid").jqGrid("setSelection", "3"); 或 并在加载完成中: loadComplete: function () { $("computer-grid").setSelection(hardwareId, true); } 在loadComplete中调用外部函数: loa
ID
填充一个隐藏字段,然后我需要相应的行高亮显示以显示选择
我尝试过各种方法,但没有一种有效。没有错误。以下是我尝试过的东西:
$("#computer-grid").jqGrid("setSelection", "3");
或
并在加载完成
中:
loadComplete: function () {
$("computer-grid").setSelection(hardwareId, true);
}
在loadComplete
中调用外部函数:
loadComplete: function () {
showSelectedRow();
}
function showSelectedRow() {
var hardwareId = $("#HardwareId").val();
$("computer-grid").setSelection(hardwareId, false);
}
function showSelectedRow() {
var hardwareId = $("#HardwareId").val();
$("#computer-grid").jqGrid('setSelection', hardwareId);
}
如果有其他选项,我不必使用setSelection
。我只想突出显示hardwareId
的网格行不为空
/////编辑///////
按要求提供的其他信息:
我正在使用从trirand.com下载的jqGrid 4.8.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”隐藏字段中,该字段位于表单中,然后提交给服务器。网格不在表单中。一切正常
我现在做的是处理如果用户返回此页面会发生什么。这个web应用程序有6个视图,每个页面上有一个表单,有点像一个向导。如果用户返回网格中的此页面,服务器将发送HardwareId,然后将其存储在隐藏字段“#HardwareId”中。我现在尝试的是,当网格填充时,它应该在HardwareId hidden字段中查找一个值,如果有,它应该高亮显示网格中相应的行
因此,用户单击“后退”按钮后,此隐藏字段将获得一个值:
<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" />
似乎其中一些应该起作用,但不知道为什么。我注意到我的一些示例在grid id调用中缺少pound(#),这导致了以下工作代码: 在栅格定义中:
loadComplete: function () {
showSelectedRow();
}
然后函数:
loadComplete: function () {
showSelectedRow();
}
function showSelectedRow() {
var hardwareId = $("#HardwareId").val();
$("computer-grid").setSelection(hardwareId, false);
}
function showSelectedRow() {
var hardwareId = $("#HardwareId").val();
$("#computer-grid").jqGrid('setSelection', hardwareId);
}
正在工作。您能提供更详细的信息吗:哪个jqGrid版本和哪个fork(,对于版本中的旧jqGrid,我已根据要求添加了更多信息。我不确定您需要了解从服务器返回的数据的哪些信息?初始网格填充是使用MVC“JsonResult”,因此我相信它是一个json字符串。但是,带有hardwareid的隐藏字段与通常的MVC模型一起传递给vie来自控制器的w。唯一会填充此内容的时间是,如果用户已做出选择,继续,然后使用“后退”按钮返回。您的rowid有问题。能否包含一个服务器响应示例(包含两行数据)?输入数据中的
HardwareId
值在哪里?哪些元素是#HardwareId``和#SelectedDevice。您应该包括至少一个网格的idPrefix`参数,以确保页面上没有重复的id。此外,我建议您尝试替换jqGrid文件的URL(至少在测试中是这样)对于中描述的免费jqGrid 4.13.0的URL,您应该写简短的评论,告知其他人您的问题文本的更改。我完全无意中打开了您的旧问题。您包含了JSON响应示例。它是第一个网格还是第二个网格的数据(从mobileGridUrl
或从computerGridUrl
)?似乎有两个网格具有完全相同的colModel
,并且可能具有相同的数据。值HardwareId
与
的id
相同,两个网格中可能存在相同的id,并且可以有重复的id。此外,您在onElectrow
的内部调用unelectrow
,其中我很怀疑。