MVCGrid.net(http://mvcgrid.net)を使用しています)。まず第一に、素晴らしいグリッドツール!グリッドは正常に機能していますが、グリッドにデータを入力するときに、RetrieveDataMethodに追加のパラメーターを渡す必要があります。渡す必要のある値はビューモデルの一部であり、AdditionalQueryOptionとして渡す必要があると確信しています。クライアント側のイベントの後にのみ送信されたくないので、これをフィルターにしたくありません。常にRetrieveDataMethodに渡してほしい。非表示の入力にdata-mvcgrid-type = 'additionalQueryOption'を追加しようとしましたが、まだ送信されませんでした。次に、イベントをトリガーするためにdata-mvcgrid-apply-additional = 'event'が必要であることに気付きました。これはフィルターとどう違うのですか?非表示の値を追加のクエリオプションとして登録するためにフックできるグリッド読み込みイベントはありますか?何'
グリッドのデータ取得メソッドの定義は次のとおりです。
.WithRetrieveDataMethod((context) =>
{
var options = context.QueryOptions;
// this is the bit i need
var projectId = ???;
options.AdditionalQueryOptions.Add("projectId", projectId);
int totalRecords;
var items = ReportManager.GetReports(out totalRecords, options);
return new QueryResult<ReportSummaryViewModel>()
{
Items = items,
TotalRecords = totalRecords
};
})
これはビューコードです:
<h1>Reports for @Model.ProjectName</h1>
<p class="form-inline">
<button type="button" class="btn btn-default" onclick="window.location.href='@Url.Action("Index", "Home")'">Back</button>
<button type="button" class="btn btn-primary" onclick="window.location.href='@Url.Action("Create", "Reports", new { @id = Model.ProjectId })'">New Report</button>
</p>
<!-- This is the hidden input i'd like to pass as an additional query option-->
@Html.HiddenFor(x => x.ProjectId)
<div id="reportList">
@Html.MVCGrid("ReportsGrid")
</div>
必要な追加オプションは、クエリ文字列パラメーターとして渡されます。だから私はドキュメントの準備ができて追加のクエリオプションを設定しようとしました。
$(function () {
initAdditionalOptions();
});
function initAdditionalOptions() {
MVCGrid.setAdditionalQueryOptions("ReportsGrid", { projectId: $('#ProjectId').val() });
}
これは技術的には機能しますが、IDはURLに2回含まれています:/ Reports / Index / 21?projectid = 21
私はこれと一緒に暮らすことができますが、ここでより良いアプローチはありますか?
最近、ページパラメータと呼ばれる新機能が追加され、実行しようとしていることを正確に実行できるようになりました。最新のNuGetパッケージを使用していることを確認してください。
使用方法は次のとおりです。
1)これをグリッド構成に追加します。
.WithPageParameterNames("ProjectId")
2)ビューからパラメータの値を渡します
@Html.MVCGrid("PPGrid", new { ProjectId = "whatever" })
3)RetrieveDataMethodの値を使用します
string projectIdVal = context.QueryOptions.GetPageParameterString("ProjectId");
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加