Loop checkBox-Steuerelementwerte in einer DataGrid-Spalte mithilfe von ASP.NET und Visual Basic .NET durch und untersuchen sie.

In diesem Artikel wird beschrieben, wie Sie jede Zeile eines ASP.NET DataGrid-Steuerelements durchlaufen und ermitteln, ob das ASP.NET CheckBox-Serversteuerelement, das zum Identifizieren der Zeile verwendet wird, ausgewählt wurde.

Originalversion des Produkts:   Visual Basic
Ursprüngliche KB-Nummer:   321881

Zusammenfassung

Der Beispielcode in diesem Artikel verwendet die Microsoft SQL Server Northwind-Datenbank, um das DataGrid-Steuerelement aufzufüllen, und fügt dann der ersten Spalte für jede Zeile ein CheckBox-Serversteuerelement hinzu. Dies ist eine gängige Technik, mit der Benutzer mehrere, bestimmte Zeilen in einem DataGrid auswählen können.

Dieser Artikel bezieht sich auf die folgenden .NET Framework Klassenbibliotheksnamespaces:

  • System.Data.SqlClient
  • System.Text

Anforderungen

  • Windows
  • .NET Framework
  • Internetinformationsdienste (IIS)
  • Visual Studio .NET

Erstellen einer ASP.NET-Webanwendung mithilfe von Visual Basic .NET

  1. Starten Sie Visual Studio .NET.
  2. Klicken Sie im Menü Datei auf Neu, und wählen Sie anschließend Projekt.
  3. Wählen Sie im Dialogfeld "Neuer Project" unter Project Typen Visual Basic Projekte aus, und wählen Sie dann unter "Vorlagen**" ASP.NET Webanwendung** aus.
  4. Ersetzen Sie im Feld "Speicherort " den Standardnamen "WebApplication# " durch "MyWebApp". Wenn Sie den lokalen Server verwenden, können Sie den Servernamen als http://localhostbelassen. Das resultierende Feld "Speicherort " wird angezeigt als http://localhost/MyWebApp.

Erstellen der Webformular-Beispielseite

  1. Fügen Sie der ASP.NET Webanwendung wie folgt ein neues Webformular hinzu:

    1. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, zeigen Sie auf "Hinzufügen", und klicken Sie dann auf "Webformular hinzufügen".
    2. Geben Sie im Feld "Name " "MySample.aspx" ein, und wählen Sie " Öffnen" aus.
  2. Ändern Sie im Eigenschaftenfenster die pageLayout-Eigenschaft für das Dokument in "FlowLayout". Obwohl Sie dies nicht tun müssen, um den Beispielcode zu verwenden, wird die Präsentation dadurch übersichtlicher dargestellt.

  3. Fügen Sie der Seite wie folgt ein DataGrid-, ein Button- und ein Label-Serversteuerelement hinzu:

    1. Ziehen Sie ein ASP.NET DataGrid-Serversteuerelement aus der Web Forms Toolbox auf das Zeichenblatt.
    2. Ändern Sie im Eigenschaftenfenster die ID des DataGrid-Steuerelements in DemoGrid.
    3. Ziehen Sie ein ASP.NET Button-Serversteuerelement aus der Web Forms Toolbox auf die Seite unter dem DataGrid.
    4. Ändern Sie im Eigenschaftenfenster die ID des Schaltflächen-Steuerelements in "GetSelections", und ändern Sie dann die Text-Eigenschaft in " Auswahl abrufen".
    5. Ziehen Sie ein ASP.NET Label-Serversteuerelement aus der Web Forms Toolbox auf die Seite unterhalb des Schaltflächen-Steuerelements.
    6. Ändern Sie im Eigenschaftenfenster die ID des Bezeichnungssteuerelements in "ResultsInfo", und löschen Sie dann text in der Text-Eigenschaft .
  4. Wechseln Sie im Editor zur HTML-Ansicht. Fügen Sie den Code zur DataGrid-Standardvorlage hinzu, um die Spalten zu erstellen. Der resultierende Code für das Steuerelement sollte wie folgt angezeigt werden:

    <asp:DataGrid id="DemoGrid" runat="server" DataKeyField="CustomerID">
        <Columns>
            <asp:TemplateColumn HeaderText="Customer">
                <ItemTemplate>
                    <asp:CheckBox ID="myCheckbox" Runat="server" />
                </ItemTemplate>
            </asp:TemplateColumn>
        </Columns>
    </asp:DataGrid>
    
  5. Klicken Sie mit der rechten Maustaste auf die Seite, und klicken Sie dann auf " Code anzeigen". Dadurch wird die CodeBehind-Klassendatei im Editor geöffnet. Fügen Sie der CodeBehind-Klassendatei die folgenden Namespaceverweise hinzu:

    Imports System.Data.SqlClient
    Imports System.Text
    
  6. Ersetzen Sie den vorhandenen Code für den Page_Load Ereignishandler durch den folgenden Code:

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       If Not IsPostBack Then
          'Create a SqlConnection object.
          'Modify the connection string as necessary for your environment.
          Dim cn As SqlConnection = New SqlConnection("Server=localhost;database=Northwind;UID=sa;PWD=")
          Dim cmd As SqlCommand = New SqlCommand("SELECT * FROM Customers", cn)
          cn.Open()
          Dim reader As SqlDataReader = cmd.ExecuteReader()
          DemoGrid.DataSource = reader
          DataBind()
          reader.Close()
          cn.Close()
       End If
    End Sub
    
  7. Wechseln Sie zur Entwurfsansicht, und doppelklicken Sie dann auf "GetSelections". Dadurch wird die CodeBehind-Klassendatei im Editor geöffnet. Ersetzen Sie den vorhandenen Code im GetSelections_Click Ereignishandler durch den folgenden Code:

    Private Sub GetSelections_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GetSelections.Click
        Dim rowCount As Integer = 0
        Dim gridSelections As StringBuilder = New StringBuilder()'Loop through each DataGridItem, and determine which CheckBox controls
        'have been selected.
        Dim DemoGridItem As DataGridItem
        For Each DemoGridItem In DemoGrid.Items
    
            Dim myCheckbox As CheckBox = CType(DemoGridItem.Cells(0).Controls(1), CheckBox)
            If myCheckbox.Checked = True Then
                rowCount += 1
                gridSelections.AppendFormat("The checkbox for {0} was selected<br>", _
                DemoGrid.DataKeys(DemoGridItem.ItemIndex).ToString())
            End If
        Next
        gridSelections.Append("<hr>")
        gridSelections.AppendFormat("Total number selected is: {0}<br>", rowCount.ToString())
        ResultsInfo.Text = gridSelections.ToString()
    End Sub
    

Überprüfen, ob es funktioniert

  1. Klicken Sie im Menü "Datei " auf "Alle speichern ", um das Webformular und andere Dateien zu speichern, die dem Projekt zugeordnet sind.

  2. Klicken Sie im Menü "Erstellen" in der integrierten .NET-Entwicklungsumgebung (IDE) Visual Studio auf "Projektmappe erstellen".

  3. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf die Webformularseite (MySample.aspx), und klicken Sie dann auf "Im Browser anzeigen". Beachten Sie, dass auf der Seite die Daten im Raster angezeigt werden. Darüber hinaus wird in der ersten Spalte jeder Zeile ein Kontrollkästchen angezeigt. Der Benutzer kann auf dieses Kontrollkästchen klicken, um bestimmte Zeilen zu markieren.

  4. Aktivieren Sie einige der Kontrollkästchen für die Zeilen, und klicken Sie dann auf " Auswahl abrufen".

    Nachdem die Seite einen Roundtrip zum Server durchgeführt und den Code im GetSelections_Click Ereignishandler ausgeführt hat, wird eine Liste der Elemente angezeigt, die Sie im vorherigen Schritt ausgewählt haben. Der Code im GetSelections_Click Ereignishandler durchläuft jedes DataGridItem Element in Ihrem ASP.NET DataGrid-Serversteuerelement, bestimmt, ob die Checked-Eigenschaft des zugehörigen CheckBox-Steuerelements wahr ist, und zeichnet dann den zugeordneten Schlüsselwert an dieser bestimmten Position für das DataKeys DataGrid auf.

References