2015-11-23 2 views
1

У меня есть gridview с столбцом itemtemplate с флажком в нем. Я только хочу, чтобы пользователь выбрал 3 из этих флажков. На 4-й выбор я хочу вывести сообщение, в котором сообщается, что разрешено только 3, а затем снимите флажок, который они только что проверили. Я пробовал разные javascripts, но не мог заставить его работать.Снимите отметку с последнего флажка на CheckedChanged в коде за

Теперь я очень близок к тому, что делаю это в своем коде VB по сравнению с событием CheckedChanged. Я могу вывести сообщение на 4-й выбор, но я не могу снять флажок. Я думал, что box.Checked = False сделает это, но это не так. Нужно ли мне что-то делать с отправителем? Или я близко к тому, что у меня есть?

Protected Sub CheckBoxPain_CheckedChanged(sender As Object, e As System.EventArgs) 

    Dim box As CheckBox 
    Dim numChecked As Integer = 0 

    For Each row As GridViewRow In gv_pain.Rows 
     If row.RowType = DataControlRowType.DataRow Then 
      box = CType(row.Cells(0).FindControl("CheckBoxPain"), CheckBox) 
      If box.Checked Then 
       numChecked = numChecked + 1 
      End If 
     End If 
    Next 

    'Response.Write("NUM:" & numChecked.ToString) 
    'Response.Write("STATUS:" & box.Checked.ToString) 
    'Response.Write("ITEM:" & box.SelectedItem.Text) 

    If numChecked.ToString > 3 Then 
     Response.Write("<script>alert('Only 3 Pain Selections allowed')</script>") 
     box.Checked = False 
    End If 

End Sub 

ответ

1

Я решил это путем добавления UnCheckMe переменного и захвата CType(sender, Checkbox), см ниже:

Protected Sub CheckBoxPain_CheckedChanged(sender As Object, e As System.EventArgs) 

    Dim box As CheckBox 
    Dim numChecked As Integer = 0 
    Dim GridCategory As String = "Pain" 

    For Each row As GridViewRow In gv_pain.Rows 
     If row.RowType = DataControlRowType.DataRow Then 
      box = CType(row.Cells(0).FindControl("CheckBox" & GridCategory), CheckBox) 
      If box.Checked Then 
       numChecked = numChecked + 1 
      End If 
     End If 
    Next 

    Dim MaxChecked As String = "3" 
    If numChecked.ToString > MaxChecked Then 
     Response.Write("<script>alert('Only " & MaxChecked & " " & GridCategory & " Selections allowed, uncheck one to make a new selection.')</script>") 

     Dim UnCheckMe = CType(sender, CheckBox) 
     UnCheckMe.Checked = False 
    End If 

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