KendoGrid - After applying custom filter and then navigating to next or any other page, the filter values are not getting passed to controller
<p>Used Kendo Version: <strong>2015.2.624</strong></p>

<p>I have implemented kendogrid server side paging with additional parameters. Below is how my controller looks like:</p>

<pre><code>public ActionResult GetData([DataSourceRequest] DataSourceRequest request, DateTime startDate, DateTime endDate, int state = -1, string poolName = null, string submitter = null)
{
    poolName = string.IsNullOrEmpty(poolName) ? null : poolName;
    submitter = string.IsNullOrEmpty(submitter) ? null : submitter;

    var summarylist = new List&lt;Summary&gt;();
    var total = 0;
    using (var db = new SummaryEntities())
    {
        var jobs = db.SummaryTable.Where(k =&gt; k.created &gt;= startDate &amp;&amp; k.created &lt;= endDate)
             .Where(k =&gt; state != -1 ? k.state == state : k.state &gt; state)
             .Where(k =&gt; poolName != null ? k.pool_name == poolName : k.pool_name != null)
             .Where(k =&gt; submitter != null ? k.submitter == submitter : k.submitter != null);

        jobs = jobs.OrderByDescending(job =&gt; job.id);

        total = jobs.Count();

        // Apply paging...
        if (request.Page &gt; 0)
        {
            jobs = jobs.Skip((request.Page - 1) * request.PageSize);
        }

        jobs = jobs.Take(request.PageSize);

        foreach (var job in jobs)
        {
            summarylist.Add(new Summary(job));
        }
    }

    var result = new DataSourceResult()
    {
        Data = summarylist,
        Total = total
    };

    return Json(result, JsonRequestBehavior.AllowGet);
}
</code></pre>

<p>additional parameters are the current values which the user has set over the widget datepicker, input box etc.</p>

<p>Below is how my datasource looks like in grid:</p>

<pre><code>&lt;script type="text/javascript"&gt;
j$ = jQuery.noConflict();

j$(document).ready(function () {
    j$("#grid").kendoGrid({
        dataSource: {
            transport: {
                read: {
                    url: "/Home/GetData/",
                    dataType: "json",
                    data: {
                        startDate: j$("#startdate").val(),
                        endDate: j$("#enddate").val()
                    }
                }
            },
            pageSize: 30,
            serverPaging: true,
            schema: {
                data: 'Data',
                total: 'Total'
            }
        },
        height: j$(window).height() - 85,
        groupable: true,
        sortable: true,
        filterable: false,
        columnMenu: true,
        pageable: true,
        columns: [
            { field: "JobId", title: "Job Id", template: '&lt;a href="/home/jobs/#:JobId#" target="_blank"&gt;#:JobId#&lt;/a&gt;', type: "number" },
            { field: "Name", title: "Job Name", hidden: true },
            { field: "PoolName", title: "Pool Name" },
            { title: "Date Time", columns: [{ field: "Start", title: "Start" },
                                            { field: "End", title: "End" }
                                           ],
            headerAttributes: {
                "class": "table-header-cell",
                style: "text-align: center"
            }

            },
            { field: "State", title: "State" },
            {
                title: "Result", columns: [{ field: "ResultPassed", title: "P" },
                                           { field: "ResultFailed", title: "F" }
                                          ],
                headerAttributes: {
                    "class": "table-header-cell",
                    style: "text-align: center"
                }

            },
            { field: "Submitter", title: "Submitter" }

        ]
    });

});

&lt;/script&gt;
</code></pre>

<p>It works pretty good until I observed this issue:</p>

<ol>
<li>Change the filter values i.e submitter, date range etc and
controller gets all this information in additional parameters where
I am taking action accordingly and it works just fine.</li>
<li>Now suppose the result returned from step 1 has multiple pages and
when you click next page, or last page or any other page number, the
controller gets invoked which is expected but the additional
parameters being set in step 1 is not getting passed again instead
the default values are there which is ruining everything.</li>
</ol>

<p><strong>Correction:</strong></p>

<p>Additional parameters are getting lost at client side only.</p>

<p>Now please tell me what am I missing here?</p>

<p><strong>Expected Result:</strong> In step 2 additional parameters should not get lost and it should be same as step 1.</p>

<p>Any help is appreciated.</p>

<p><strong>EDITED:</strong> 
Complete controller and grid code.</p>

<p>Thanks,
Vineet</p>