JqGrid mit autocompletion cant parse-Daten vom controller zum view
Letzten paar Tage ich habe versucht, jqgrid mit autocompletion-Feldern zu arbeiten, jetzt kann ich es auf der Arbeit mit lokalen Daten, aber sobald ich versuche Daten von meinem controller-Daten nicht analysiert werden.
Anzeigen-code:
{ name: 'EanNummer', index: 'EanNummer', width: 65, sortable: true, editable: true, edittype: 'text', editoptions: {
dataInit:
function (elem) {
$(elem).autocomplete({ minLength: 0, source: '@Url.Action("GetBrands")' })
.data("autocomplete")._renderItem = function (ul, item) {
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a>" + item.Id + ", " + item.Name + "</a>")
.appendTo(ul);
};
}
}
},
wenn statt Quelle: url ich nutze Quelle: ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"] für Beispiel-code funktioniert gut und zeigt sich, so etwas muss falsch sein mit meinem controller-Seite code
Controller-Code:
public JsonResult GetBrands()
{
string vendorId = "";
var username = "";
var name = System.Web.HttpContext.Current.User.Identity.Name;
var charArray = name.Split("\\".ToCharArray());
username = charArray.Last();
vendorId = service.GetVendorIdByUsername(username);
List<String> list = new List<String>();
var brands = service.getBrandsByVendor(vendorId);
var s= (from brand in brands
select new
{
Id = brand.BrandId,
Name = brand.BrandName
}).ToList();
return Json(s);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie
item.Id
unditem.Name
auf der client-Seite sollten Sie wieder nicht dieList<String>
. Stattdessen sollten Sie gibt die Liste dernew {Id=brand.BrandId, Name=brand.BrandName}
. Man sollte Sie nur verwenden, LINQ stattforeach
:AKTUALISIERT: modifizierte ich für Euch die demo von die Antwort und enthalten die jQuery-UI-Autocomplete-Unterstützung in zwei Formen. Die standard-rendering:
- und custom-rendering:
Die AutoVervollständigen-Funktion arbeitet in Erweiterte Suche dialog in der gleichen Weise wie in der Suchen-Symbolleiste:
Herunterladen können Sie die demo von hier.
Den server-code der standard-AutoVervollständigen ist
Es gibt array von strings im JSON-format. Die Liste von Titeln gefiltert werden, indem
term
argument, die initialisiert werden, um die Zeichenfolge in das Eingabefeld eingegeben hat.Den server-code der custom autocomplete ist
Es nutzt SqlFunctions.StringConvert nutzen zu können
LIKE
im Vergleich der Ganzzahlen. Außerdem gibt es die Liste der Objekte mitvalue
dietitle
Eigenschaft. Wenn Sie zurückkehren würde-Objekte mitvalue
dielable
Eigenschaften die Werte aus derlable
Eigenschaften wird angezeigt, in der AutoVervollständigen-Kontext-Menü und die entsprechendenvalue
- Eigenschaft eingefügt werden sollen, in das Eingabefeld ein. Wir verwenden benutzerdefiniertetitle
- Eigenschaft statt.Den code der client-Seite ist
für die standard-rendering-und
für das benutzerdefinierte rendering.
Zusätzlich verwende ich einige CSS-Einstellungen:
Können Sie kommentieren
.ui-autocomplete.ui-menu { opacity: 0.9; }
Einstellung, wenn Sie möchten, haben einige kleineDeckkraft-Effekt in der AutoVervollständigen-Kontext-Menü.
ToList()
oderToArray()
was ich vergessen habe zu zählen, zumindest am Anfang.autocomplete
(inklusive benutzerdefinierte rendering mit_renderItem
) in ASP.NET MVC.