VB.Net — как запустить действие после нажатия флажка в строке GridView?

#vb.net

Вопрос:

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

 <asp:TemplateField>
     <ItemTemplate>
        <asp:CheckBox ID="CheckBox1" runat="server" commandargument="<%# container.displayindex  %>" commandbutton="AddLine" 
             onclick="UpdateDB" Wrap="True" />
     </ItemTemplate>
</asp:TemplateField>
 

Но сейчас я провожу мелкомасштабное тестирование, вызывая текстовое поле для создания текста после установки флажка.

 Protected Sub UpdateDB(ByVal sender As Object, ByVal checkbox1 As CheckBox, ByVal e As EventArgs)

    Dim ixrow As Integer = sender.commandargument
    Dim CheckBoxChecked As Boolean = checkbox1.Checked

    If CheckBoxChecked = True Then

        LineID_DB.Text = "Hello"

    End If

End Sub
 

Но во время тестирования, когда я устанавливаю флажок, я получаю это сообщение об ошибке:

 'JavaScript runtime error: 'UpdateDB' is undefined
 

Что это значит undefined ? Что я должен добавить, чтобы исправить это?

Ответ №1:

И Asp.NET У элемента CheckBox управления нет вызываемого события на стороне сервера “onclick” . Есть и другие Asp.NE T Элементы управления, которые имеют такие события, как Button “OnClick” для серверной стороны или свойства “OnClientClick” , связанного с кликом на стороне клиента (javascript). В вашем случае интерпретатор кода ищет событие Javascript под названием «onclick», поэтому, если вы измените следующим образом
<asp:CheckBox ID="CheckBox1" runat="server" onclick="alert('This is javascript');" ……. Вы можете видеть, что это событие на стороне клиента (javascript).

Чтобы сделать то, что вы хотите сделать (предположительно, путем просмотра кода), вы должны использовать “OnCheckedChanged” событие, которое срабатывает на стороне сервера, и убедитесь Method/Sub , что написанное вами имеет ту же подпись, совместимую с делегатом CheckBox.OnCheckedChanged . Как показано в приведенном ниже коде:

Сторона клиента:

  <asp:CheckBox ID="CheckBox1" runat="server" onclick="alert('This is javascript');"  OnCheckedChanged="UpdateDB" AutoPostBack="true" />
 

На стороне Сервера:

 Public Sub UpdateDB(ByVal sender As Object, ByVal e As EventArgs)

    Dim CheckBoxChecked As Boolean = CType(sender, CheckBox).Checked

    If CheckBoxChecked = True Then
        Debug.WriteLine("CheckBox1 is checked")
    End If

End Sub