2017-09-12 16 views
0

jsバージョンdojo autocomplateを使用して作業バージョンを取得できましたが、MVCバージョンを使用して動作する必要があります。下記の提案と私はなっていたのjsエラーを処分したカップルより多くの項目を変更するように私は、コントローラにDataSourceRequestを追加しました:kendo-ui mvc autocompleteに結果が表示されない

私が期待されるJSONを返すコントローラを介して、それをトレースとして動作しているように見えます
//Fixed, added the schema definition 
    Uncaught TypeError: e.slice is not a function 

(下記)、スピナーが停止して結果が表示されないため、配線が終了しません。

{ 
    "Data": [{ 
    "EmployeeId": 2147483649, 
    "EmployeeName": "Emily F Johnston", 
    "Rating": 75.0, 
    "LastAudited": null 
    }, { 
    "EmployeeId": 2147483687, 
    "EmployeeName": "Joshua Smith", 
    "Rating": 80.2, 
    "LastAudited": null 
    }, { 
    "EmployeeId": 2147483656, 
    "EmployeeName": "Thomas F Dunn", 
    "Rating": 45.0, 
    "LastAudited": "\/Date(1463893200000)\/" 
    }, { 
    "EmployeeId": 2147483660, 
    "EmployeeName": "Marjon Christine Marik", 
    "Rating": 88.0, 
    "LastAudited": null 
    }], 
    "Total": 4, 
    "AggregateResults": null, 
    "Errors": null 
} 

コントローラ:オートコンプリート定義

 [HttpPost] 
    public ActionResult EmployeeLookup(string text, [DataSourceRequest] DataSourceRequest request) 
    { 
     var filter = request?.Filters.FirstOrDefault() as FilterDescriptor; 
     var search = string.Empty; 
     if (filter != null) 
     { 
      search = filter.Value?.ToString() ?? string.Empty; 
     } 
     var employees = new List<EmployeeLookupResultEntryViewModel>(); 
     var results = _employeeService.EmployeeLookup(search); 

     if (results == null) 
      return Json(employees.ToDataSourceResult(request)); 

     return Json(results.ToDataSourceResult(request)); 
    } 

:また

、私はTelerikからこのDOCOを見つけた私のユースケースTelerik Custom Templateに非常によく似ていますが、それはそうコントローラメソッドを示す欠けています彼らがどのように配線しているかを確認することはできません。

@(Html.Kendo().AutoComplete() 
       .Name("Employees") 
       .DataTextField("EmployeeName") 
       .Placeholder("Search Employee") 
       .Filter("contains") 
       .IgnoreCase(true) 
       .MinLength(3) 
       .Delay(300) 
       .HighlightFirst(true) 
       .HtmlAttributes(new { style = "width:100%" }) 
       .NoDataTemplate("Employee Not Found") 
       .DataSource(dataSource => 
       { 
        dataSource.Custom() 
          .ServerFiltering(true) 
          .Type("aspnetmvc-ajax") 
          .Transport(transport => 
          { 
           transport.Read("EmployeeLookup", "Employee", new {area = "Client"}); 
          }) 
          .Schema(schema => {schema.Data("Data");}); 
        }) 
        .HeaderTemplate("<div style=\"width: 400px;\" class=\"dropdown-header k-widget k-header\">" + 
           "<span>Id</span>" + 
           "<span>Name</span>" + 
           "<span>Pwc Rating" + 
            "<span>Last Audited</span>" + 
        "</div>") 
       .Template("<span style=\"width: 50px;\">#: data.EmployeeId #</span><span class=\"cell\">#: data.EmployeeName #</span><span class=\"cell\">#: data.PwcRating #</span><span class=\"cell\">#: data.LastAudited #</span>") 
     ) 

JSON/datasouceが...同様にどのようなドキュメントの状態に、返送されて、まだウィジェットはそれを配線することができないので、私は、HTMLのいくつかのコンフィグ設定が欠落しているように見えます。

答えて

1

あなたは、あなたが追加剣道ASP.NETを

  1. を行う必要がある三つのことがあり、この機能を有効にすることを意図した場合は、

    を実装しましたよりもはるかに複雑であるサーバーのフィルタリングを有効にしていますプロジェクトにMVCライブラリ

  2. はaspnetmvc-AJAXであるためにあなたのデータソースの種類を変更し
  3. このexampleあたりのコントローラでDataSourceRequestを使用するためにあなたの行動をリワーク。 DataSourceRequest属性は、返信用

    public ActionResult Products_Read([DataSourceRequest] DataSourceRequest request) 
    { 
        return Json(productService.Read().ToDataSourceResult(request)); 
    } 
    
+0

おかげオプションではありません。私は後になっているようなtelerikリンクを見つけましたが、コントローラを提供していないので、ルックアップの配線方法を確認する必要があります。私はサーバー側のフィルタリング設定を削除しましたが、それだけでは不十分です。あなたの提案を実装しようとします。 –

+0

私はDataSourceRequestを実装しました。フィルタ値が通過するのを見ることができ、応答は期待どおりですが、スピナーは決して止まらず、示唆された値は表示されません(jsエラーもありません)。 –

関連する問題