Forums Neueste Beiträge
 

Anfängerfrage: DataBinding an ein GridView via LINQ...

12/11/2009 - 10:58 von M.Erlinger | Report spam
Hallo
ich bin gerade dabei erste Versuche in ASP.net mit Datenbindungen zu
programmieren, und haben gleich einmal eine Frage / bzw. Problem:
Die Anbindung des Gridviews an meine Datenbank hàtte ich mir so
vorgestellt:
MethodeRetrieve()
{
DataContext db = new DataContext(@"Data Source=..");

Mitglieder = db.GetTable<ClassMitglieder>();
var qry = from p in Mitglieder
where (p.FamilienName.StartsWith
(ASPxTextBoxName.Text.Trim()))
select new { p.MitgliedsId, p.FamilienName,
p.VorName, p.MailAdresse };

ASPxGridView1.SettingsBehavior.AllowFocusedRow = true;
ASPxGridView1.DataSource = qry;
ASPxGridView1.DataBind();

ASPxGridView1.Columns["MitgliedsId"].Caption = "ID";
ASPxGridView1.Columns["VorName"].Caption = "Vorname";
}

Hier die Klasse Mitglieder:

[Table(Name = "Mitglieder")]
public class ClassMitglieder
{
[Column(Name = "IDMit")]
public int MitgliedsId { get; set; }

[Column(Name = "Name")]
public string FamilienName { get; set; }
[Column(Name = "Vorname")]
public string VorName { get; set; }

[Column(Name = "Email")]
public string MailAdresse { get; set; }

public string WriteName()
{
string sReturn = string.Empty;
sReturn = "Mein Name lautet: " + FamilienName + " " + VorName;
return sReturn;
}
}

Ich habe nàmlich über dem GridView ein paar TextBox-Controls, die als
Suchkriterien fungieren. Es funktioniert soweit alles bestens - die
Suche und Datenanzeige - nur wenn mehr als eine Seite an Daten
vorhanden ist, und ich auf die 2. Seite (oder 3., 4., . Seite)
wechsle, dann sind die Daten wieder weg.

Im Grunde erscheint es mir logisch - weil "qry" das mit LINQ erstellt
wird - nach dem Page-Refresh nicht mehr existent sein wird, oder null
ist.

Aber wie kann ich es lösen ????

Danke schon mal für Hinweise und Unterstützung.
Schönen Gruß
Michael
 

Lesen sie die antworten

#1 Gerold Mittelstädt
12/11/2009 - 17:13 | Warnen spam
Hi,

M.Erlinger schrieb:
nur wenn mehr als eine Seite an Daten
vorhanden ist, und ich auf die 2. Seite (oder 3., 4., . Seite)
wechsle, dann sind die Daten wieder weg.

Im Grunde erscheint es mir logisch - weil "qry" das mit LINQ erstellt
wird - nach dem Page-Refresh nicht mehr existent sein wird, oder null
ist.

Aber wie kann ich es lösen ????



Fürs Paging bist Du selbst zustàndig. Heißt: Du musst bei jedem Request
die Daten holen, aufbereiten und anzeigen, die die jeweilige Seite
betreffen. Nach einem PostBack sind diese Daten nàmlich wieder
verschwunden. Der Server weiß an sich nichts mehr davon, was beim
letzten Request stattgefunden hat.

Hier mal ein kleines Beispiel anhand eines Gàstebuchs:
''' <summary>
''' Ruft Eintràge einer Seite aus dem Gàstebuch ab.
''' </summary>
''' <param name="Page">Seite, deren Eintràge zurügegeben werden sollen</param>
''' <returns>Liste der Gàstebucheintràge für die übergebene Seite.</returns>
Public Function GetRecords(ByVal Page As Integer) As List(Of GuestbookRecord) Implements IGuestbook.GetRecords
Dim PageSize As Integer = Integer.Parse(AppSettings!GuestBookPageSize)
Return (From gb In gbRecords _
Order By gb.ID Descending _
Skip (Page - 1) * PageSize _
Take PageSize) _
.ToList
End Function



Es werden immer nur die Daten vom Server geholt, die auch angezeigt
werden sollen. Hier kansnt Du natürlich noch beliebig sortieren usw. Das
hier ist recht minimal.
Die Datenbindung erfolgt dann auf der Seite selbst einfach durch:

.DataSource = GetRecords(CurrentPage)
.DataBind()


Viele Grüße!

Ähnliche fragen