DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Hannes Preishuber Artikel Drucken
        
Zeilennummerierung im Datagrid

Listen sind eine feine Sache um Daten zu visualisieren. Manchmal würde man auch gerne auf Anhieb sehen, wieviele Einträge in dieser Liste eigentlich vorhanden sind. Dafür stehen visuell zwei Möglichkeiten bereit. Entweder mit der Summe am Ende der Liste, wie man das von Rechungen kennt oder eine Durchnummerierung.
Wir wollen hier kurz die zweite Möglichkeit erörtern. Eine forlaufende nummerierung ist natürlich ganz einfach, wenn die Datenquelle das hergibt. Wenn aber eine solches Feld Positionsnummer fehlt oder durch Einsatz eines Filter falsche Werte zurückgibt, brauchen wir eine anderen Lösungsansatz.

Die Funktion heisst ItemIndex und steckt im Datacontainer.
Da dieser Count eine Eigenschaft des Datacontainer ist, funktioniert dies natürlich mit allen Datengebunden Listen wie z.B. die Datalist. Die Daten werden im Bereich ItemTemplate ausgegeben. Hier verwenden wir dazu ein Label. Da Indexe immer bei 0 beginnen erhöhen wir den Wert um 1, um einen echten Zähler zu realisieren.
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="rowcount.aspx.vb" Inherits="tonershop.rowcount"%>
<HTML>
 <HEAD>
  </HEAD>
 <body MS_POSITIONING="FlowLayout">
  <form id="Form1" method="post" runat="server">
   <asp:DataList id="DataList1" runat="server">
    <ItemTemplate>
     <asp:Label id="Label1" runat="server">
      <%# Container.ItemIndex+1 %>
     </asp:Label>
     <asp:Label id="Label2" runat="server">
      <%# Container.DataItem("au_lname") %>
     </asp:Label>
    </ItemTemplate>
   </asp:DataList>
  </form>
 </body>
</HTML>

Der vollständigkeit halber noch der Code, der die Daten holt und füllt. Als Tabelle wird Pubs verwendet die bei jeder SQL Standardinstallation dabei ist.

Imports System.Data
Imports System.Data.SqlClient


Public Class rowcount
    Inherits System.Web.UI.Page
    Protected WithEvents DataList1 As System.Web.UI.WebControls.DataList


    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim DS As DataSet
        Dim MyConnection As SqlConnection
        Dim MyCommand As SqlDataAdapter
        MyConnection = New SqlConnection("server=localhost;database=pubs;Trusted_Connection=yes")
        MyCommand = New SqlDataAdapter("select * from Authors", MyConnection)
        DS = New DataSet()
        MyCommand.Fill(DS, "Authors")
        DataList1.DataSource = DS.Tables("Authors").DefaultView
        DataList1.DataBind()
    End Sub

End Class

Natürlich lässt sich das im Grid auch verwenden
<asp:DataGrid id="DataGrid1" runat="server" AllowPaging="True">
    <Columns>
     <asp:TemplateColumn>
      <ItemTemplate>
       <asp:Label runat="server" ID="Label1">
        <%# Container.ItemIndex+1 %>
       </asp:Label>
      </ItemTemplate>
     </asp:TemplateColumn>
    </Columns>
 
  
    </asp:DataGrid>


 


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 05.08.2002
  Gültig bis: 04.09.2002
3 Ratings
Bewertung: 80,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG