4

KendoUI AutoComplete ウィジェットによって送信された ajax 投稿値を簡単に読み取る方法を見つけることができませんでした。

ドキュメントには、このタスクに関する詳細が欠けています。実際、サーバー側のコード例を見つけることができたのは次のとおりです。

namespace Kendo.Mvc.Examples.Controllers
{
    using System.Web.Mvc;

    public partial class AutoCompleteController : Controller
    {
        public ActionResult ServerFiltering()
        {
            return View();
        }
   }
}

着信データが自動バインドされることを期待していましたKendo.Mvc.UI.DataSourceRequestが、そうではありません...

KendoUI AutoComplete ウィジェットを効率的に扱った場合は、TIA さん、その経験を共有してください!

4

2 に答える 2

5

@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> 

この例は機能しており、開発者ツールで検証されたサーバーでフィルタリングを行います。さらにサポートが必要な場合はお知らせください。

于 2013-08-05T16:12:05.013 に答える
0

MVC 内で Keno Autocomplete を使用する方法を説明する優れた投稿がここにあります

そこに記述されているコードを実装することに決めた場合は、非常に注意深く従うようにしてください。あらゆる不一致はおそらく剣道を壊します。

于 2014-02-17T20:26:05.637 に答える