Перебирать и проверять значения элемента управления CheckBox в DataGrid столбце с помощью ASP.NET и Visual Basic .NET

В этой статье описывается, как прокрутить каждую строку элемента управления DataGrid ASP.NET и как определить, выбран ли серверный элемент управления CheckBox ASP.NET, используемый для идентификации строки.

Исходная версия продукта: Visual Basic
Исходный номер базы знаний: 321881

Сводка

Пример кода в этой статье использует базу данных Microsoft SQL Server Northwind для заполнения элемента управления DataGrid, а затем добавляет элемент управления CheckBox в первый столбец каждой строки. Это распространенный способ, позволяющий пользователям выбирать несколько определенных строк в DataGrid.

В этой статье рассматриваются следующие пространства имен библиотеки классов .NET Framework:

  • System.Data.SqlClient
  • System.Text

Требования

  • Виндоус
  • Платформа .NET Framework
  • Службы интернет-информации (IIS)
  • Visual Studio .NET

Создание веб-приложения ASP.NET с помощью Visual Basic .NET

  1. Запустите Visual Studio .NET.
  2. В меню Файл выберите пункт Создать, а затем выберите Проект.
  3. В диалоговом окне "Создать проект" выберите "Проекты Visual Basic " в разделе "Типы проектов" и выберите ASP.NET веб-приложение в разделе "Шаблоны".
  4. В поле "Расположение " замените имя webApplication# по умолчанию на MyWebApp. Если вы используете локальный сервер, вы можете оставить имя сервера как http://localhost. В результирующем поле "Расположение " отображается как http://localhost/MyWebApp.

Создание примера страницы веб-формы

  1. Добавьте новую веб-форму в веб-приложение ASP.NET следующим образом:

    1. Щелкните правой кнопкой мыши узел проекта в обозревателе решений, выберите пункт "Добавить" и нажмите кнопку "Добавить веб-форму".
    2. В поле "Имя" введите MySample.aspx и нажмите кнопку "Открыть".
  2. В окне "Свойства" измените свойство pageLayout для документа на FlowLayout. Хотя для использования примера кода этого не требуется, это сделает презентацию более чистой.

  3. Добавьте элемент управления DataGrid, кнопку и сервер метки на страницу следующим образом:

    1. Перетащите элемент управления сервером DataGrid ASP.NET из панели элементов веб-форм на страницу.
    2. В окне "Свойства" измените идентификатор элемента управления DataGrid на DemoGrid.
    3. Перетащите серверный элемент управления ASP.NET Button из панели инструментов Web Forms на страницу под DataGrid.
    4. В окне "Свойства" измените идентификатор элемента управления Button на GetSelections, а затем измените свойство Text на Get Selections.
    5. Перетащите серверный элемент управления Label ASP.NET из панели инструментов веб-форм на страницу под элементом управления Button.
    6. В окне "Свойства" измените идентификатор элемента управления Label на ResultsInfo, а затем удалите любой текст в свойстве Text .
  4. Перейдите в html-представление в редакторе. Добавьте код в шаблон DataGrid по умолчанию для создания столбцов. Результирующий код элемента управления должен выглядеть следующим образом:

    <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. Щелкните правой кнопкой мыши страницу и выберите команду "Просмотреть код". Откроется файл класса code-behind в редакторе. Добавьте следующие ссылки на пространство имен в файл класса code-behind:

    Imports System.Data.SqlClient
    Imports System.Text
    
  6. Замените существующий код обработчика Page_Load событий следующим кодом:

    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. Перейдите в режим конструктора и дважды щелкните GetSelections. Откроется файл класса code-behind в редакторе. Замените существующий код в обработчике GetSelections_Click событий следующим кодом:

    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
    

Убедитесь, что он работает

  1. В меню "Файл" нажмите кнопку "Сохранить все" , чтобы сохранить веб-форму и другие файлы, связанные с проектом.

  2. В меню "Сборка" в интегрированной среде разработки Visual Studio .NET щелкните "Сборка решения".

  3. В обозревателе решений щелкните правой кнопкой мыши страницу веб-формы (MySample.aspx), а затем щелкните "Вид" в браузере. Обратите внимание, что на странице отображаются данные в сетке. Кроме того, флажок отображается в первом столбце каждой строки. Пользователь может щелкнуть этот флажок, чтобы пометить определенные строки.

  4. Щелкните, чтобы выбрать несколько флажков для строк, а затем нажмите кнопку "Получить выбор".

    После того как страница отправляется на сервер и выполняет код в GetSelections_Click обработчике событий, появится список элементов, выбранных на предыдущем шаге. Код в обработчике событий выполняет циклы по каждому GetSelections_Click элементу DataGridItem управления сервера DataGrid ASP.NET DataGrid, определяет, является ли проверяемое свойство связанного элемента управления CheckBox true, а затем записывает связанное значение ключа по определенной позиции для DataKeys DataGrid.

Ссылки