1

我有以下jqGrid:

在此处输入图像描述

我进行 AJAX 调用以在该网格上显示元素。我想在网格(同一选项卡)上显示更多项目并进行了另一个 AJAX 调用。

所以,我创建了 2 个数组。第一个数组存储 Ajax Call 1 的结果,第二个数组存储 Ajax Call 2 的结果。

我连接了这些数组并将它们显示在网格上:

var test3 = test1.concat(test2);
thegrid.addJSONData(test3);

到目前为止一切顺利,唯一的问题是,当我想双击网格上的项目时,它只能为每个项目使用相同的路径,这意味着它只能打开一个表单,而不能打开不同的表单。

那是因为当点击网格时,它会调用这个函数:

ondblClickRow: function (rowid, iRow, iCol, e) {
    onDoubleClickGrid(rowid, iRow, iCol, e, divname, listname);
}

这是整个函数:

function onDoubleClickGrid(rowid, iRow, iCol, e, divname, listname, useFormToOpen) {

    var rowData = $("#" + divname).getRowData(rowid);
    var curID = rowData.Id;
    var useForm = "EditForm.aspx";

    if (checkNull(useFormToOpen)!="") {
        useForm = useFormToOpen;
    }

    var curPath = "/MM/Lists/" + listname;
    // var curPath = "/nderungsantrag/Lists/" + listname;
    var url = curPath + "/" + useForm + "?ID=" + curID;
    openInDialog(dlgWidth, dlgHeight, true, true, true, url);
}

我尝试使用标志,但这些在此处不起作用,因为对象都在合并数组中,并且无法区分它们。

是否可以获取在 dblClickRow 上单击的元素的对象值? 因为那时我可以使用 for 循环并检查对象的属性。根据它的属性,我可以改变路径。还是有另一种方法可以做到这一点?

4

1 回答 1

1

ondblClickRow 有一个参数事件(4 个)。在这里你可以得到这样的元素(如果我理解正确的要求):

ondblClickRow : function (rowid, iRow, iCol, e) {
    var target = e.target || e.srcElement; // this is what you need
    ....
}

您的 curPath 是一个常量值和一个变量的组合

var curPath = "/MM/Lists/" + listname

如果在双击该行时listname变量没有改变,您将始终拥有相同的 curPath。双击该行时,我看不到您是否更改它。

于 2021-03-16T10:46:46.377 回答