Was gilt es zu beachten, wenn man eine eigene Liste, d.h. ein Objekt, was weitere Objekte enthält und sich durchlaufen lässt, an ein GridView-Control binden will?

Zuerst einmal braucht es die Fähigkeit durchlaufen zu werden, und das nicht nur in eine Richtung. Das kann man lösen, indem man "IList", und die 2 folgenden Methoden die das Interface bereitstellt, implementiert:

#region IList Members

object IList.this[int index]
{
   get
   {
      return items[index];
   }
}

#endregion

#region ICollection Members

public int Count
{
   get
   {
      return items.Count;
   }
}

#endregion

Items ist dabei eine generische Liste von meinem benutzerdefinierten Typ. Nun lässt sich das Objekt an die GridView binden. Was ist aber mit dem Paging? Das funktioniert noch nicht - versucht man es, erhält man:

"The data source does not support server-side data paging."

Die Lösung dafür:

protected void GWHitlist_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
   GWHitlist.PageIndex = e.NewPageIndex;
   GWHitlist.DataBind();
}

Dein Kommentar