2016-10-17 6 views
0

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

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 

спасибо

+0

Вы получаете какое-либо исключение? – Sami

+0

нет, потому что я отслеживаю код и останавливаю его, когда ему не удалось установить флажок – Ali

ответ

0

я нашел решение моей проблемы, добавление шаблона шаблона и шаблона элемента в HTML-код GridView, и тогда он найдет флажок управления

<Columns> 
<asp:TemplateField HeaderText="Select"> 
<ItemTemplate> 
    <asp:checkbox ID="cbSelect" runat="server"/> 
</ItemTemplate> 
</asp:TemplateField> 
</Columns> 
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), так что вы могли бы извлечь значение управления с использованием этого конкретного ID

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

благодаря Rojalin Sahoo для вашего ответа. я добавил идентификатор к флажку, но все еще не могу установить флажок – Ali

Смежные вопросы