【问题标题】:jqgrid how to persist row when reloading gridjqgrid如何在重新加载网格时保留行
【发布时间】:2012-02-16 05:14:30
【问题描述】:

一些情况的信息:

假设我有一个 10 行的网格视图(固定高度),但我的数据记录有超过 10 条记录 - 所以会有一个垂直滚动条。

假设我想编辑(或删除)第 14,16 和 17 行。 选择第 14 行时,我使用 onselect 函数调用外部表单。 提交外部表单后,数据将被保存,我通过触发 reloadgrid 来更新网格。 [我没有使用jqgrid附带的editform,因为我也想更改与已编辑记录相关的其他表中的数据。]

此时(重新加载网格),整个网格会刷新并移回第一行。 然后我必须向下滚动到第 16 行并单击它。这将继续用于进一步的后续记录......

想知道是否有任何方法可以使网格刷新最新更新的数据,但不返回第一行但继续查看我们正在查看的行号?

谢谢。

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    是否需要重新加载网格。默认情况下,Jqgrid 将已编辑的行置于编辑状态,或在删除时从网格中删除已删除的行。因此,只需将重新加载网格设置为 false。在编辑/删除时,信息会发布到服务器,然后您可以相应地更新数据库。成功后,网格本身会替换内容而不重新加载内容。

    如果默认调用重新加载网格,它会替换整个内容,因此控件会转到第一行的顶部。

    当您在数据库中插入新行并且需要网格中的数据库主键时,需要重新加载网格。

    【讨论】:

    • 因为网格仅用作对其他数据的参考查找。一种空间限制,所以没有网格显示每个字段。相反,我使用外部表单来更新数据并使用 ajax 来保存数据。通过这种方法,网格单元不会被更新。因此,为了更新单元格,我进行了重新加载,从更新的数据库中提取数据。目前我正在玩 setSelection。我记住了rowid,然后在重新加载后,我对行进行了setSelection,那种帮助。但想知道是否还有其他更好的方法。
    • 你可以去表单编辑。为您不想在 UI 中显示的所有网格列设置 hidden=true,但也设置 editable = true。这样,当您打开表单以编辑特定行时,您会在表单中看到所有可编辑的内容。
    • 虽然我没有尝试,但这种替代方案是可能的——因为它会涉及对现有代码的许多更改。但理论上是可以的。数据将得到更新,而无需刷新网格。从而维护该行并更新该行信息。只有在进入顶级记录变得如此难以忍受时,可能才会尝试这样做。感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    相关资源
    最近更新 更多