Freigeben über


Durchlaufen und Untersuchen von CheckBox-Steuerelementwerten in einer DataGrid-Spalte mithilfe von ASP.NET und Visual Basic .NET

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.

Originalproduktversion: Visual Basic
Ursprüngliche KB-Nummer: 321881

Zusammenfassung

Der Beispielcode in diesem Artikel verwendet die Microsoft SQL Server Northwind-Datenbank zum Auffüllen des DataGrid-Steuerelements 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. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.
  3. Wählen Sie im Dialogfeld "Neues Projekt" unter "Projekttypen" 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://localhost. Das resultierende Feld "Speicherort " wird angezeigt als http://localhost/MyWebApp.

Erstellen der Beispielwebformularseite

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

    1. Klicken Sie mit der rechten Maustaste in Projektmappen-Explorer 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 dann "Ö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 ein DataGrid-Steuerelement, eine Schaltfläche und ein Bezeichnungsserver-Steuerelement wie folgt hinzu:

    1. Ziehen Sie ein ASP.NET DataGrid-Serversteuerelement aus der Web Forms-Toolbox auf die Seite.
    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 unterhalb des DataGrid.
    4. Ändern Sie im Eigenschaftenfenster die ID des Schaltflächen-Steuerelements in "GetSelections", und ändern Sie dann die Texteigenschaft in "Auswahl abrufen".
    5. Ziehen Sie ein ASP.NET Bezeichnungsserver-Steuerelement aus der Web Forms-Toolbox auf die Seite unterhalb des Schaltflächen-Steuerelements.
    6. Ändern Sie im Eigenschaftenfenster die ID des Steuerelements "Label" in "ResultsInfo", und löschen Sie dann jeden Text in der Text-Eigenschaft.
  4. Wechseln Sie in die HTML-Ansicht im Editor. Fügen Sie den Code zur Standardmäßigen DataGrid-Vorlage 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 sie 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 Entwicklungsumgebung (IDE) von Visual Studio auf " Projektmappe erstellen".

  3. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf die Webseite (MySample.aspx), und klicken Sie dann im Browser auf "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 klicken, um dieses Kontrollkästchen zu aktivieren, um bestimmte Zeilen zu markieren.

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

    Nachdem die Seite einen Roundtrip zum Server erstellt und den Code im GetSelections_Click Ereignishandler ausführt, wird eine Liste der Elemente angezeigt, die Sie im vorherigen Schritt ausgewählt haben. Der Code im GetSelections_Click Ereignishandler durchläuft die einzelnen DataGridItem Elemente 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