I'm using MVCGrid.net (http://mvcgrid.net). First of all, fantastic grid tool! I have my grid working properly, however when i'm populating my grid I need to pass an additional parameter to my RetrieveDataMethod. The value i need to pass is part of my view model and I'm pretty sure I need to pass it as an AdditionalQueryOption. I don't want this to be a filter because i don't want it only sent after a client side event. I want it passed to my RetrieveDataMethod always. i tried adding data-mvcgrid-type='additionalQueryOption' to my hidden input, and it still wasn't sent. Then i noticed that this requires data-mvcgrid-apply-additional='event' to trigger the event. how is this different than a filter? Is there a grid loading event that i can hook into to register my hidden value as an additional query option? What's the right approach for my situation here?
Here's my Retrieve Data Method definition for my grid:
.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
};
})
This is the View Code:
<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>
The additional option i need is passed as a query string parameter. so i tried setting the additional query options on document ready.
$(function () {
initAdditionalOptions();
});
function initAdditionalOptions() {
MVCGrid.setAdditionalQueryOptions("ReportsGrid", { projectId: $('#ProjectId').val() });
}
That technically works, but the id is in the url twice now: /Reports/Index/21?projectid=21
i can live with this, but is there a better approach here?