0

我有一个运行良好的网络网格

@{
                    var DB = Database.Open("CHAVI");
                    var grid = new WebGrid(DB.Query("SELECT [FileTrackingTag], FileID FROM (SELECT [FileTrackingTag], FileID, ROW_NUMBER() OVER (PARTITION BY [FileTrackingTag] ORDER BY FileID) rn FROM [dbo].[MasterSequence]) t WHERE rn=1 ORDER BY [FileTrackingTag]"));
                    @grid.GetHtml(
                        tableStyle: "webgrid",
                        columns: grid.Columns(
                            grid.Column(header: "Assign? ", style: "labelcolumn",
                                    format:
                                        @<text><input class="check-box" id="assignChkBx" name="assignChkBx" type="checkbox" value="@item.FileTrackingTag" /></text>),
                            grid.Column("FileTrackingTag", "FileTrackingTag")
                            )
                    )
                 }

但是,当我在 WebGrid 上的不同选项卡之间切换时选中多个框时,只有当前选项卡上的那些会被发送过来(它仍然是同一个网页,它只是在 webgrid 的条目中切换)

有没有办法将它们保留在 webgrid 选项卡之间?

4

1 回答 1

1

我不知道有任何内置方法可以完成您所说的内容。WebGrid 分页仅通过选择需要在给定时间显示的数据来工作。如果您查看为网页生成的 HTML,您会发现那里只有“当前”项目。

由于其他页面的数据甚至不在您的网页中,MVC 无法知道它们。您最好的选择实际上是在您的控制器上创建一个操作,并在页面在网格上更改时发布当前项目。您会将这些发布的项目存储在一些临时存储中(缓存、TempData 等)。然后,当用户单击 Save 时,您需要保存发布到 Save 方法的项目和临时存储集合中的项目。

在一路走下去之前,我会仔细检查最终用户,确保这是他们真正想要和期望的。正确实施需要大量的工作,当您更新他们实际上无法在屏幕上看到的记录时,它可能会得出一些结论。其他选项是禁用分页并使用不同的控件,或者使用某种类型的向导流程来明确您在每个“页面”之后保存结果。

于 2012-10-30T13:48:18.053 回答