WebGrid不在页面之间保持检查

时间:2012-10-30 13:23:59

标签: c# razor webgrid

我有一个工作正常的网页

@{
                    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的条目进行选项)< / p>

是否存在将它们保存在webgrid标签之间的解决方案?

1 个答案:

答案 0 :(得分:1)

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

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

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