@David Perlman、あなたの質問をよりよく理解できるようになったので、この回答を完全に編集しています。このKendo
例でServer Filtering
は、すぐに使用できるサーバー フィルタリングを備えた OData を使用していますが、これは私自身が気づいていませんでした。私のように MVC コントローラーを使用する場合は、例を変更して、新しいコード例で使用するようにparameterMapを使用する必要があります。私の例では、使用する「Sites」の単純なテーブルがありEntity Framework
、Sites テーブルに直接配線されたビューがあります。Lookups.cs というクラスがあり、動的モデル GetSitesStartsWith(string startsWith) を返します。
public dynamic GetSitesStartsWith(string startsWith)
{
return _context.vAaiomsSites
.Select(s => new
{
ID = s.ID,
SiteName = s.SiteName
}).OrderBy(s => s.SiteName).Where(s => s.SiteName.StartsWith(startsWith));
}
したがって、私の Requisitions コントローラーでは、次のように JsonResult を作成します。
public JsonResult GetSitesStartsWith(string startsWith)
{
var lookups = new Lookups();
var data = lookups.GetSitesStartsWith(startsWith);
return Json(data, JsonRequestBehavior.AllowGet);
}
最後に行うことは、次のように、OData ではなく、この JsonResult に接続されているビューに AutoComplete コードを追加することです。
<div id="example" class="k-content">
<div class="demo-section">
<h2>Sites</h2>
<input id="sites" style="width: 250px" />
</div>
<script>
$(document).ready(function() {
$("#sites").kendoAutoComplete({
placeholder: "Enter site ...",
dataTextField: "SiteName",
filter: "startswith",
minLength: 3,
dataSource: {
type: "json",
serverFiltering: true,
serverPaging: true,
pageSize: 20,
transport: {
read:
{
url: "Requisitions/GetSitesStartsWith"
}, //read
parameterMap: function() {// send value of autocomplete as the "startsWith" parameter
return {
startsWith:$("#sites").data("kendoAutoComplete").value()
};
}
} //transport
} //datasource
}); //kendoAutoComplete
}); //DocumentReady
</script>
</div>
この例は機能しており、開発者ツールで検証されたサーバーでフィルタリングを行います。さらにサポートが必要な場合はお知らせください。