2014-01-14 47 views
3

即时通讯使用本指南http://jqueryui.com/autocomplete/#custom-data和我知道什么C#和剃须刀尝试自动完成3个文本框时,只要其中一个被挑选。合并剃刀与jquery的自动完成功能

所以如果我输入partno并从下拉列表中选择一个项目名称,desc和ID填充。如果我输入任何其他字段,也是如此。

我创建了一个类,并把它与项目的列表中

var varItems = new List<Item>(); 
      varItems = db.Items.Select(tbl => new Item 
        { 
          ID = tbl.ID, 
          Name = tbl.Name, 
          PartNo = tbl.PartNo, 
          Description = tbl.Description 
        }).ToList(); 

然后发送,在一个viewbag

ViewBag.Items = var.items; 

然后在视图

$("#Name").autocomplete({ 
     minLength: 0, 
     source: @ViewBag.Items, 
     focus: function(event, ui) { 
      $("#Name").val(ui.item.label); 
      return false; 
     }, 
     select: function(event, ui) { 
      $("#Name").val(ui.item.Name); 
      $("#PartNo").val(ui.item.PartNo); 
      $("#Description").html(ui.item.Description); 
      return false; 
     } 
    }); 

但它不喜欢viewbag在那里。即时猜测我必须做一些循环产生类似于下面的东西?

var projects = [ 
     { 
     value: "jquery", 
     label: "jQuery", 
     desc: "the write less, do more, JavaScript library", 
     icon: "jquery_32x32.png" 
     }, 
     { 
     value: "jquery-ui", 
     label: "jQuery UI", 
     desc: "the official user interface library for jQuery", 
     icon: "jqueryui_32x32.png" 
     }, 
     { 
     value: "sizzlejs", 
     label: "Sizzle JS", 
     desc: "a pure-JavaScript CSS selector engine", 
     icon: "sizzlejs_32x32.png" 
     } 
    ]; 

如果是这样我怎么循环我的列表来创建上述?

谢谢你们

回答

2

试试这个:

source: @Html.Raw(Json.Encode(@ViewBag.Items)); 

这将编码您的项目以JSON和它应该工作。

+0

进入一个空的下拉菜单出现在名称字段下? – AlexW

+0

这可能是其他错误,你能确认json生成正确吗?检查Html源代码。 –

+0

我认为它看起来不错yeah:来源:[{“ID”:1,“Name”:“HP DL360p”,“PartNo”:“670638-425”,“Description”:“”},{“ID” 2,“名称”:“Samsung 840 Pro 256GB”,“PartNo”:“”,“Description”:“256GB SSD”}] – AlexW