Получить CheckBox, динамически созданный в динамически созданный GridView

У меня проблема, что я искал alot, но не работает ответ: проблема в том, что я создал динамически gridview, а затем добавил динамически созданные флажки в gridview и добавил, но когда iam пытается получить статус флажка (отмечен или нет), я не могу достичь Установите флажок, пожалуйста, помогите мне и спасибо за этот сайт greate

 Dim MessagesTable As DataTable = Recipient.CreateInboxMessagesTable(LoginName, WhatToShow)
    Dim Tbl As New DataTable
    Dim Col As DataColumn
    Dim Row As DataRow

    Col = New DataColumn("ID", GetType(String)) : Tbl.Columns.Add(Col)
    Col = New DataColumn("Select", GetType(String)) : Tbl.Columns.Add(Col)
    Col = New DataColumn("Sender", GetType(String)) : Tbl.Columns.Add(Col)
    Col = New DataColumn("Subject", GetType(String)) : Tbl.Columns.Add(Col)
    Col = New DataColumn("ReceiveDate", GetType(String)) : Tbl.Columns.Add(Col)
    Col = New DataColumn("Privacy", GetType(String)) : Tbl.Columns.Add(Col)
    Col = New DataColumn("ImportanceLevel", GetType(String)) : Tbl.Columns.Add(Col)
    Col = New DataColumn("JustDate", GetType(String)) : Tbl.Columns.Add(Col)
    Col = New DataColumn("LastReplyID", GetType(String)) : Tbl.Columns.Add(Col)
    Col = New DataColumn("Status", GetType(Integer)) : Tbl.Columns.Add(Col)
    Col = New DataColumn("From", GetType(String)) : Tbl.Columns.Add(Col)
    For Each TRow As DataRow In MessagesTable.Rows
        Row = Tbl.NewRow
        Row("ID") = TRow.Item("ID_Rec")
        'Row("Select") = New CheckBox
        Row("Sender") = Member.GetUserName(TRow.Item("From_Msg"))
        Row("Subject") = TRow.Item("Subject_Msg") & " =+-+= " & Message.HTMLToText(TRow.Item("Body_Msg"))
        Row("ReceiveDate") = Recipient.Convert24TimeTo12(TRow.Item("ReceiveDate_Rec")).Substring(11)
        Row("Privacy") = TRow.Item("Privacy_Msg")
        Row("ImportanceLevel") = TRow.Item("ImportanceLevel_Msg")
        Row("JustDate") = TRow.Item("ReceiveDate_Rec")
        Row("LastReplyID") = TRow.Item("LastReplyID_Msg")
        Row("Status") = TRow.Item("Status_Msg")
        Row("From") = TRow.Item("From_Msg")
        Tbl.Rows.Add(Row)
    Next
    aGrid.DataSource = Tbl
    aGrid.DataBind()

вот как я создаю вид сетки и код ниже, как я добавляю флажок

 For Each GVRow As GridViewRow In aGrid.Rows
                   Dim CB As New CheckBox
        GVRow.Cells(1).Controls.Add(CB)
    Next

и это, как я пытался получить статус флажка, но это не сработало

 Protected Sub btnCompleted_Click(sender As Object, e As EventArgs) Handles btnCompleted.Click
    For Each Row As GridViewRow In gvInbox.Rows
        Dim cbSelect As CheckBox = DirectCast(Message.FindControlRecursive(Row, "CB"), CheckBox)
        'If cbSelect.Checked = True Then

        'End If
    Next
End Sub

благодарю вас

asp.net,vb.net,gridview,checkbox,

0

Ответов: 2


0

Весь код выглядит хорошо. Но вы добавили Checkbox в gridview без какого-либо ID.

For Each GVRow As GridViewRow In aGrid.Rows
        Dim CB As New CheckBox
        CB.ID = "chkRow" // Is the ID for checkbox
        AddHandler CB.CheckedChanged, AddressOf CheckedChaged // Could add event to the checkbox
        CB.AutoPostBack = True // make Autopostback to true to handle postback
        GVRow.Cells(1).Controls.Add(CB) // then add your control to specific position
Next

Вы должны создать экземпляр флажка, а затем установить значение атрибута (ID, Autopostback), чтобы вы могли получать контрольное значение с использованием этого идентификатора

 For Each row As GridViewRow In GridView1.Rows
        If row.RowType = DataControlRowType.DataRow Then
            Dim chkRow As CheckBox = TryCast(row.Cells(0).FindControl("chkRow"), CheckBox) //same ID to find that control
            If chkRow.Checked Then
              //Your Logic
          End If
        End If
    Next

0 принят

Я нашел решение для своей проблемы, добавив templateField и шаблон элемента в HTML Code GridView, а затем найдет флажок

<Columns>
 <asp:TemplateField HeaderText="Select">
 <ItemTemplate>
  <asp:checkbox ID="cbSelect" runat="server"/>
 </ItemTemplate>
 </asp:TemplateField>
</Columns>
asp.net, vb.net, GridView, флажок,
Похожие вопросы