【问题标题】:Selecting row after updating record using jqgrid使用 jqgrid 更新记录后选择行
【发布时间】:2013-04-07 03:46:51
【问题描述】:

我遇到了关于 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.它会记住选择/更新的项目。

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

【问题讨论】:

  • 尝试将 rowid 存储在隐藏字段中
  • 我试图将它存储在隐藏字段中,但是当我传递值时,仍然给了我未定义的值。

标签: c# javascript jqgrid


【解决方案1】:

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

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

2 处将 jqgrid 更改为 jqGridsetselection 更改为 setSelection

更新:如果要在更新后保留选择,您可以通过current:true in reloadgrid 实现此目的

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

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

请注意reloadGrid 是驼峰式(G 为上)

【讨论】:

  • 即使我将其更改为该格式。毕竟它仍然行不通。 =)
  • aftersavecell和aftersavefunction一样吗?我已经在客户端事件中添加了它
【解决方案2】:

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

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

$("#jqgrid").bind("jqGridAddEditAfterSubmit", function () {
    this.grid.selectionPreserver(this);
});

【讨论】:

  • 嗨@oleg,我尝试在我的程序上使用此代码并且它有效。 stackoverflow.com/questions/6881717/…
  • 但我想添加一些功能,例如定位滚动条。我有 500 行,如果我点击第 250 行,假设滚动条的位置在中间。我还希望它设置所选项目的位置。你能帮我解决这个问题吗?
  • 嗨@Oleg 你能帮我解决这个问题吗? stackoverflow.com/questions/16142993/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 2016-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
相关资源
最近更新 更多