在特定页面上重新加载jqGrid后无法获取ID

时间:2013-12-27 21:08:31

标签: jquery asp.net-mvc jqgrid scroll

我在MVC应用程序中使用jqGrid。我正在使用"scroll: true"选项。我的问题是;在特定页面上重新加载jqGrid之后:

$("#jqTable").trigger("reloadGrid", [{ page: next_page }]);

我无法获得应该存在的新ID:

var ids = $("#jqTable").getDataIDs();

修改

另外,我忘了说在reloadGrid之后我甚至没有看到下一页的行。

以下是更详细的说明:

有一个网页,我必须在jquery对话框的Enter键上显示jqgrid中某些选定行的详细信息。我只用Enter键逐行浏览网格。首先输入=打开对话框。第二个输入是保存。因此,根据我的客户的意愿,我必须标记当前行并选择下一行的代码是:

//declaration of global variables as selected_index -> current index of id in $("#jqTable").getDataIDs() array ...
//...

//In this moment jquery dialog is open. I work on jqgrid on underlying page:

//Set status of current row:
$("#" + selected_row_id).find("td").css("background-color", "azure");
$("#jqTable").jqGrid("setCell", selected_row_id, "Status", "Completed");

//Select next row:
selected_index = selected_index + 1;
temp_id = selected_row_id;
selected_row_id = $("#jqTable").getDataIDs()[selected_index];
if (selected_row_id === undefined) {
    //If I am here it means that I have to jump to next page!
    //Trying to simulate virtual scroll if id is undefined - because id is on the next page!
    current_page = current_page + 1; // SO, IT IS NEXT PAGE!
    $("#jqTable").trigger("reloadGrid", [{ page: current_page }]);

    //Here selected_row_id is still undefined after this line of code:
    selected_row_id = $("#jqTable").getDataIDs()[selected_index];
}
$("#jqTable").setSelection(selected_row_id, true);

2 个答案:

答案 0 :(得分:0)

关于$("#jqTable").trigger("reloadGrid")

loadComplete$("#jqTable").setSelection(rowid)内部事件处理程序集选择。 尝试在loadComplete事件处理程序

中执行此操作
loadComplete: function () {
       selected_row_id = $("#jqTable").getDataIDs()[selected_index];
}

假设您在重新加载后尝试获取低于$(" #jqTable")的ID,请尝试此操作,

 var IDs = [];
    $("#jqTable").find("span").each(function(){ IDs.push(this.id); }); // find with your element as span

jQuery的内置map()函数:

var IDs = $("#jqTable span[id]")         // find spans with ID attribute
  .map(function() { return this.id; }) // convert to set of IDs
  .get(); // convert to instance of Array (optional)

答案 1 :(得分:0)

这一行:

$("#jqTable&#34)最接近。("的.ui-的jqGrid-BDIV&#34)scrollTop的(2400);

帮助我以编程方式滚动,等待刷新网格数据的超时帮助我选择合适的行!

但是,这不是稳定的解决方案。我得检查一下......