2013-03-01 2 views
1

У меня проблема с обнаружением статуса флажка. У меня есть панель «Сетка» с флажком. Ad мне нужно получить определенное значение из выбранной строки, чтобы передать его в запрос.Состояние CheckBox не обнаружено

Но проблема в том, когда я повторяю строки GridView, я не могу определить, какой флажок установлен, а какой нет. Процесс просто не вводит эту условную инструкцию:

Dim chk As CheckBox 
.... 
     chk = CType(rowItem.Cells(0).FindControl("CheckBox1"), CheckBox) 
     If chk.Checked Then 
      Primaryid &= GridView1.DataKeys(rowItem.RowIndex)("account_id").ToString() 
     End If 

Я также пробовал эту инструкцию условных выражений. Но это не работает, а также:

Dim Chkb As CheckBox = (CType(gvr.FindControl("CheckBox1"), CheckBox)) 
     If Chkb IsNot Nothing AndAlso Chkb.Checked Then 
      Primaryid = gvr.Cells(0).Text 
     End If 

Это функция кода VB BACKEND для кнопки, которая запускает выполнение:

Protected Sub RegBtn_Click(ByVal sender As Object, ByVal e As EventArgs) Handles RegBtn.Click 
    Dim Primaryid As String = "Initial stage" 
    Dim chk As CheckBox 

    For Each rowItem As GridViewRow In GridView1.Rows 
     chk = CType(rowItem.Cells(0).FindControl("CheckBox1"), CheckBox) 
     If chk.Checked Then 
      Primaryid &= GridView1.DataKeys(rowItem.RowIndex)("account_id").ToString() 
     End If 
    Next 

    Dim exmess As String = "alert('" & Primaryid & "')" 
    Page.ClientScript.RegisterStartupScript(Me.GetType(), "ErrorAlert", exmess, True) 

End Sub 

Это, как я заселить GridView:

 Dim StrQwery As String = "SELECT account_id, account_name bla bla bla"  
     Dim smd As MySqlCommand 
     smd = New MySqlCommand(StrQwery, myconn) 
     smd.CommandType = CommandType.Text 

     Dim da As New MySqlDataAdapter(smd) 
     Dim cb As New MySqlCommandBuilder(da) 
     Dim ds As New DataSet() 
     da.Fill(ds) 

     GridView1.DataSource = ds.Tables(0) 
     GridView1.DataBind() 

и это код для Grid View в передней части:

<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" 
     GridLines="None" Width="1500px"> 
     <Columns> 

        <asp:TemplateField > 
         <ItemTemplate> 
        <asp:CheckBox ID="CheckBox1" runat="server" textAlign="right" /> 
         </ItemTemplate> 

        </asp:TemplateField> 


      </Columns> 
     <AlternatingRowStyle BackColor="White" /> 
     <EditRowStyle BackColor="#2461BF" /> 
     <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#EFF3FB" /> 
     <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
     <SortedAscendingCellStyle BackColor="#F5F7FB" /> 
     <SortedAscendingHeaderStyle BackColor="#6D95E1" /> 
     <SortedDescendingCellStyle BackColor="#E9EBEF" /> 
     <SortedDescendingHeaderStyle BackColor="#4870BE" /> 
    </asp:GridView> 

Я действительно не понимаю, что я делаю неправильно, и что я должен изменить для достижения результата. Было бы очень благодарно, если вы можете мне помочь.

+1

Вы уверены, что 'CheckBox1' в' Cells [0] '? В первом столбце часто есть кнопки, такие как select. Отладка и проверка, если вы видите его в коллекции Controls – nunespascal

+0

, независимо от того, какое значение ячейки я ставлю, он все равно ничего не возвращает – meks

ответ

0

в этом цикле

For Each rowItem As GridViewRow In GridView1.Rows 
    chk = CType(rowItem.Cells(0).FindControl("CheckBox1"), CheckBox) 
    If chk.Checked Then 
     Primaryid &= GridView1.DataKeys(rowItem.RowIndex)("account_id").ToString() 
    End If 
Next 

изменение от

chk = CType(rowItem.Cells(0).FindControl("CheckBox1"), CheckBox) 

к

chk = CType(rowItem.FindControl("CheckBox1"), CheckBox) 

также это не возможно

Dim Chkb As CheckBox = (CType(gvr.FindControl("CheckBox1"), CheckBox)) 

вместо этого попробовать

Dim Chkb As CheckBox = (CType(rowItem.FindControl("CheckBox1"), CheckBox)) 
+0

, если это поможет u, сделайте это как ответ .... –

+0

нет Я только что попробовал. Предупреждающее сообщение ничего не возвращает. Я все еще не могу получить значение id – meks

+0

Я почти отчаялся. Пробовать все, но это не работает. И самое страшное, что я не могу понять, где проблема. – meks

0

привет попробуйте этот код внутри кнопки мыши действия

For Each rowItem As GridViewRow In GridView1.Rows 
    If rowItem.RowType = DataControlRowType.DataRow Then 
     Dim chk As CheckBox = TryCast(rowItem.FindControl("CheckBox1"), CheckBox) 
     Dim lbl As Label = TryCast(rowItem.FindControl("primarylbl"), Label) 

     Dim Primaryid As String = Nothing 
     If chk.Checked Then 
      Primaryid += lbl.Text 
     End If 
    End If 
Next 

он будет работать

+0

, откуда появляется 'primarylbl'? Должен ли я объявить его в передней части? – meks

+0

есть проблема в этой строке: 'Dim Primaryid As String = Nothing' появляется сообщение об ошибке:« primaryid скрывает переменную в закрывающем блоке » – meks

+0

Я пробовал этот код. Не работает, я не знаю, что делать уже – meks

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