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 の異なるタブ間を移動するときに複数のボックスをオフにすると、現在のタブのボックスのみが送信されます (これは同じ Web ページであり、WebGrid のエントリをタブで移動するだけです)。

それらを webgrid タブ間で保持するソリューションはありますか?

4

1 に答える 1

1

あなたが話していることを達成するための組み込みの方法を知りません。WebGrid ページングは​​、特定の時間に表示する必要があるデータのみを選択することによって機能します。Web ページ用に生成された HTML を見ると、「現在の」アイテムだけがそこにあることがわかります。

他のページのデータは Web ページにもないため、MVC はそれらについて知る方法がありません。最良のオプションは、コントローラーでアクションを作成し、グリッドでページが変更されるたびに現在のアイテムを投稿することです。投稿されたアイテムを一時ストレージ (キャッシュ、TempData など) に保存します。次に、ユーザーが [保存] をクリックしたときに、Save メソッドに投稿されたアイテムと一時ストレージ コレクションのアイテムの両方を保存する必要があります。

このルートをたどる前に、エンド ユーザーに再確認し、エンド ユーザーが本当に望んでいて期待しているものであることを確認します。正しく実装するにはかなりの作業が必要であり、実際には画面に表示されないレコードを更新しているときに何らかの結論に至る可能性があります。他のオプションは、ページングを無効にして別のコントロールを使用するか、何らかのタイプのウィザード フローを使用して、各「ページ」の後に結果を保存していることを明確にすることです。

于 2012-10-30T13:48:18.053 に答える