#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