2016-09-08 1 views
0

So habe ich das folgende Ansichtsmodell:Wie für den Zugriff auf Werte aus einer Liste <> in dem Ansichtsmodell für KendoUI Grid

public class PecosViewModel 
{ 
    public string SearchTerm { get; set; } 
    public List<NPIModel> NpiList { get; set; } 
} 

Auf der cshtml Seite, ich versuche so etwas wie

@(Html.Kendo().Grid<Models.ViewModels.PecosViewModel>() 
     .Name("npi-grid") 
     .Columns(columns => 
     { 
      columns.Bound(c => c.NpiList) 
     }) 
    ) 
zu tun

Ich kann auf keine der Eigenschaften der NpiList zugreifen (wie FirstName oder LastName).

ich etwas wirklich einfach, wie dies tun:

foreach (var item in Model.NpiList) 
{ 
    <div>@item.NPI @String.Format("{0}, {1}", @item.ProviderLastName, @item.ProviderFirstName)</div> 
} 

Aber ich würde wirklich die Kendo Grid verwenden möchte.

Alle Vorschläge würden sehr geschätzt werden.

Antwort

0

Sie definieren das Raster vom Typ "PecosViewModel", während es vom Typ "NPIModel" sein sollte. Wenn Sie Ansichtsmodell von Aktion in der Ansicht sind vorbei, dann können Sie unter Code verwenden:

@model Models.ViewModels.PecosViewModel 

@(Html.Kendo().Grid(Model.NpiList) 
     .Name("npi-grid") 
     .Columns(columns => 
     { 
      columns.Bound(c => c.NPI) 
     }) 
    ) 
+0

Wenn ich dies versuche, wird das Modell in Visual Studio rot mit dem Hinweis "Der Typ oder Namespace - Name 'Model' konnte nicht gefunden werden "Model". Was komisch ist, ist, dass ich in meinem einfachen foreach-Skript auf Model.NpiList zugreifen kann. – ajtatum

0

Ok sieht es aus wie Sie verwirrend sind die Dinge hier.

Das Raster sollte mit dem Modell, das Sie in diesem Beispiel NPIModel anstelle Ihres Ansichtsmodells verwenden möchten, eingegeben werden.

Der Code, den Sie dort haben, bindet die Spalte an Ihre Liste von Ihrem Ansichtsmodell.

so anstatt:

@(Html.Kendo().Grid<Models.ViewModels.PecosViewModel>() 
     .Name("npi-grid") 
     .Columns(columns => 
     { 
      columns.Bound(c => c.NpiList) 
     }) 
    ) 

müssen Sie es ändern:

@(Html.Kendo().Grid<Models.ViewModels.NPIModel>() 
     .Name("npi-grid") 
     .Columns(columns => 
     { 
      columns.Bound(c => c.FirstName) 
     }) 
    ) 

NB: dies setzt voraus, dass beide Klassen in derselben Bibliothek sind, wenn nicht entsprechend ersetzen.

dann sollten Sie Zugriff auf die Modelleigenschaften haben, um zu binden.

Wenn Sie dann die Ergebnisse an das Netz bereitstellt und nicht eine Leseaktion durchführt, dann senden Sie einfach die bestehende Liste an das Netz für diese Daten gebunden sein:

z.B. @ (Html.Kendo(). Grid (Model.NpiList)

+0

Das hat mich viel näher gebracht, aber es zeigt das Gitter ohne CSS (obwohl es im Bundle ist) und für die Spalte setzt es einfach Spaltenkopf und zeigt keine Daten. Danke! AJ – ajtatum

+0

Aus irgendeinem Grund kann ich Model.NpiList auch nicht machen.Das Modell ist dort nicht verfügbar, was seltsam ist, da ich dazu in der Lage bin, eine einfache Tabelle zu erzeugen – ajtatum

+0

Manchmal nimmt das Intellisense die Modelländerung nicht an, bis die Lösung neu geladen wird, wenn Sie das Modell auf dem Bildschirm ändern, andernfalls versuchen Sie es einfach mit @ Model.NpiList stattdessen. Wenn die CSS nicht gerendert wird, kann dies einen Fehler beim Rendern des Rasters anzeigen.Überprüfen Sie die Konsole (wenn Sie sicher sind, dass die Dateien korrekt enthalten sind) –

Verwandte Themen