Jquery jqGrid SETSELECT未突出显示行加载

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

我将MVC模型传递给视图,用
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
,其中我很怀疑。