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错误)。 –