0
我能夠使用js版本dojo autocomplate獲得工作版本,但我需要它使用MVC版本。我在控制器中添加DataSourceRequest
如下建議,並改變了擺脫了JS錯誤我得到的一對夫婦更多的項目:kendo-ui mvc自動完成不顯示結果
//Fixed, added the schema definition
Uncaught TypeError: e.slice is not a function
這似乎是工作,我跟蹤它通過控制器,它返回預期的JSON (下圖),但是當旋轉器掛起並且結果不顯示時,它不會完成接線。
{
"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));
}
自動完成定義:
另外,我發現這個DOCO從Telerik的,看起來非常相似,我的使用情況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>")
)
我似乎缺少在HTML中,某些配置設置,因爲JSON/datasouce被返回,類似於什麼文檔狀態...但小部件不能連線起來。
感謝您的答覆。我發現了一個看起來像我之後的telerik鏈接,但他們沒有提供我需要驗證他們如何連接查找的控制器。我刪除了服務器端的過濾配置,但這還不夠。我會盡力實施你的建議。 –
我實現了DataSourceRequest,我可以看到過濾器值經過並且響應如預期的那樣,微調控制器永遠不會停止,並且不會顯示建議值(也沒有js錯誤)。 –