2 Stimmen

Wie man Kontrollkästchen über die Seitenzahlung hinweg aufrechterhält: PagedList

In meinem Controller habe ich

    var myTempModel = (from f in db.BA_TEMP_RESHOP_IMPORT
                       where f.WCCR_ID == WccrId
                       select new DataImportViewModel
                       {
                        //Set Eigenschaften…
                       });

return View(myTempModel.ToPagedList(currentPage,
               maxRecords));

Any mein aktuelles ViewModel

    public class DataImportViewModel
    {

        public string WccrId { get; set; }
        public string Status                { get; set; }
        public string Note { get; set; }

    }

Mein ViewModel-Verweis ist.

@model  PagedList.IPagedList

Jedes Element verwendet displayFor. Dies funktioniert gut, aber jetzt muss ich ein Kontrollkästchen hinzufügen, das seinen Wert über die Seitenumbrüche beibehält

Ich möchte ein einzelnes Kontrollkästchen oben auf der Seite hinzufügen, das nicht auf jede Zeile angewendet wird, die aus dem DataImportViewModel zurückgegeben wird.

Ich denke, es gibt zwei Möglichkeiten, dies zu tun, bin mir aber nicht sicher, wie ich eines davon implementieren soll, noch bin ich sicher, welches das Beste ist. Ist es besser, ein neues ViewModel zu erstellen oder den Kontrollkästchenwert in eine Session-Variable zu übergeben?

Ich habe versucht, ein neues ViewModel wie dieses zu erstellen, aber ich kann nicht herausfinden, wie ich meinen return View(…) Code ändern soll, oder sogar was ich für @model in der Ansicht verwenden sollte.

public class DisplayViewModel
{
    public IEnumerable dataImport { get; set; }
    public Boolean useDefault { get; set; }
}

Vielen Dank im Voraus für Ihre Hilfe. Lassen Sie mich bitte wissen, ob es hilfreiche Informationen gibt, die ich möglicherweise ausgelassen habe. Prost

2voto

Mihai Labo Punkte 1042

Ich habe etwas Ähnliches getan:
Erweitern Sie Ihre PagedList-Entität (ich nehme an, dass Sie dort Daten wie Seitennummer, Anzahl der Datensätze pro Seite, Sortierrichtung usw. speichern) um ein boolesches Feld ... Wenn Sie die Seitennummer übergeben, in der Sie sich befinden ... senden Sie auch die Boolesche Version zurück an den Controller, so dass Sie den Wert an das Kontrollkästchen übergeben können.
Vergessen Sie nicht, das Ziel-Div (Zieldiv = das Div, in dem Ihre Entität in Ihrer Ansicht angezeigt wird) zu aktualisieren. Meine Lösung beinhaltet etwas ähnliches wie dies:

public class GridModel : GridOperations
    {
        // Konstruktor
        public GridModel()
        {
            // Definieren Sie hier beliebige Standardwerte...
            this.PageSize = 20;
            this.NumericPageCount = 20;
        }
    public IEnumerable Data { get; set; }

und habe Daten an mein Modell übergeben wie folgt:

@model  Proj.ViewModels.GridModel

und in der Grid-Operations-Klasse habe ich viele ergänzende Werte implementiert (wie z.B. einen String für ein Suchfeld, Status: aktiv/inaktiv ... usw.) zusammen mit den von Ihnen gesehenen (PageSize, NumericPageCount, Sortierrichtung, SortBy, usw.). Aus meiner Sicht ergibt das mehr Sinn ... aber ich bin möglicherweise voreingenommen :) . Wenn Sie diesen Wert nicht innerhalb Ihres DataImportViewModel übergeben können, schlage ich vor, dass Sie sich meinem Grid-Denken annähern

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X