问题描述
我曾经有过这个工作,但我不确定现在是什么破坏了它。对象和对象属性未填充下拉列表。如果我只在我的自动完成控制器中传递一个属性的字符串数组,我可以显示对象属性,但我想将整个对象传递给自动完成下拉列表并从那里设置模板样式。我一直在更改 DataTextField 和 Template 以简化此示例和测试目的,但尚未取得任何成功。此外,现在我从 Parts_Read 方法返回一组对象,并确保启用了 AllowGet。你有没有发现我遗漏了什么?
查看
@(Html.Kendo().AutoComplete()
.Name("parts_results")
.DataTextField("Name")
.Template("#= vendorPartCode # | #= Name # | #= UpcCode #")
.HeaderTemplate("<div class=\"dropdown-header k-widget k-header\">" +
"<span>Matching Parts</span>" +
"</div>")
.FooterTemplate("Total <strong>#: instance.dataSource.total() #</strong> items found")
.Filter("contains")
.MinLength(3)
.HtmlAttributes(new { style = "width:100%",@class = "form-control"})
.Height(520)
.DataSource(source =>
{
source.Read(read =>
{
read.Action("Parts_Read","AutoComplete")
.Data("onAdditionalData");
})
.ServerFiltering(true);
})
)
脚本
function onAdditionalData() {
return {
text: $("#parts_results").val(),supplier: $("#part_supplier").val()
};
}
自动完成控制器
public JsonResult Parts_Read(string text)
{
int supplier = int.Parse(Request.Params["supplier"]);
var search = Request.Params["text"];
if (!string.IsNullOrEmpty(text) && supplier >0)
{
dbContext db = new dbContext();
var data = db.dbParts.Where(x => x.PartsupplierCompanyId == supplier && (x.PartName.ToLower().Contains(search.ToLower()) || x.PartCode.ToLower().Contains(search.ToLower()))).Select(p => new TimsPart(p,p.Company)).ToArray();
return Json ( data,JsonRequestBehavior.AllowGet );
}
else
{
return new JsonResult { Data = new List<TimsPart>(),JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)