0

我对 JQgrid 有疑问。

这是我的网格代码。我正在使用“beforerowselect”和“loadcomplete”的客户端事件
注意:每次重新加载网格时,我都会使用加载完成来重新加载网
格,它将选择该项目。

<trirand:JQGrid ID="jqgrid" runat="server" Height="475px" Width="1510px" MultiSelect="false" ShrinkToFit="true" AutoWidth="true">
<ClientSideEvents BeforeRowSelect="beforeSelect" LoadComplete="loadComplete"/>


在“beforeselectevent”中,我在这里所做的是获取
“itemid”的rowid的单元格值。

我尝试创建一个会话变量来存储“ItemID”的值并将其存储在 var sessionItemID 中,以便我能够在“加载完成事件”上传递它。

问题:但每次我尝试在这里插入断点时,它总是给我 '' 值。

function beforeSelect(rowid, e) {
                grid = $("#<%= jqgrid.ClientID %>");
                ItemID = grid.jqGrid('getCell', rowid, 'ItemID');
                var sessionItemID = '<%=Session["ItemID"] %>';
}


在“加载完成”事件中。我传递了 sessionItemID,以便我可以获得 ItemID。所以每次我更新网格上的项目。
它将重新加载页面并选择我更新的项目。

问题:重新加载后,重新加载后不选择项目。

function loadComplete(sessionItemID ) {
                if (ItemID != 0 || ItemID != null) {
                    grid = $("#<%= jqgrid.ClientID %>");
                    grid.trigger("reloadgrid");
                    grid.jqgrid('setselection', "2" );
                }
            }

我想要实现的是这个(为了让故事简短)
1. 在网格上选择行,表单将弹出然后更新记录。
2.更新记录后,用户将保存页面然后关闭。
3. 网格将重新加载
4. 它会记住选择/更新的项目。

我真的很困惑我接下来要做什么。谢谢

4

2 回答 2

1

我认为您的方法名称中有一些拼写错误,

更改grid.jqgrid('setselection', "2" );grid.jqGrid('setSelection', "2" );

2jqgridjqGridsetselection对的变化setSelection

更新:如果要在更新后保留选择,您可以通过current:truereloadgrid来实现

删除 loadComplete 中的代码并将其添加到 aftersaveFunc 如下所示

                    grid = $("#<%= jqgrid.ClientID %>");
                    grid.trigger("reloadGrid",[{current:true}]);

请注意reloadGrid是驼色外壳(G 是上部)

于 2013-04-15T06:59:12.373 回答
0

要解决所描述的问题,您可以尝试使用表单编辑的reloadAfterSubmit: false选项来防止在行编辑结束时重新加载网格。如果您不添加新行,则该选项可能是最好的方法。

或者,您可以使用afterSubmit回调或jqGridAddEditAfterSubmit事件来保存当前选择并在网格的文本加载后恢复它。相应的代码可能如下:

$("#jqgrid").bind("jqGridAddEditAfterSubmit", function () {
    this.grid.selectionPreserver(this);
});
于 2013-04-16T07:43:40.013 回答