我遇到使用checkedchanged事件處理程序的問題。 以下是我的方案:問題aspxcheckbox checkedchanged事件處理程序未觸發
我有一個aspxcheckbox這是一個DataItemTemplate 這是一個gridviewdatacheckcolumn 是一個aspxgridview內部的內內。
這裏是我的aspx代碼:
<dx:ASPxGridView ID="gvCustomerCertificates" runat="server" AutoGenerateColumns="False" Caption="Customer Certificates" Width="100%">
<Columns>
<dx:GridViewDataTextColumn FieldName="CertNo" ShowInCustomizationForm="True"
VisibleIndex="1" ReadOnly="True">
<HeaderStyle Font-Bold="True"></HeaderStyle>
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="CustManufacturer" Caption="Manufacturer" ShowInCustomizationForm="True"
VisibleIndex="2" ReadOnly="True">
<HeaderStyle Font-Bold="True"></HeaderStyle>
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="CustDesc" Caption="Description"
ShowInCustomizationForm="True" VisibleIndex="3" ReadOnly="True">
<HeaderStyle Font-Bold="True"></HeaderStyle>
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="CustModel" Caption="Model"
ShowInCustomizationForm="True" VisibleIndex="4" ReadOnly="True">
<HeaderStyle Font-Bold="True"></HeaderStyle>
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="CustSerialNo" Caption="Serial No" ShowInCustomizationForm="True"
VisibleIndex="5" ReadOnly="True">
<HeaderStyle Font-Bold="True"></HeaderStyle>
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="CustControlNo" Caption="Control No" ShowInCustomizationForm="True"
VisibleIndex="6" ReadOnly="True">
<HeaderStyle Font-Bold="True"></HeaderStyle>
</dx:GridViewDataTextColumn>
<dx:GridViewDataDateColumn FieldName="CalDate" ShowInCustomizationForm="True"
VisibleIndex="7" ReadOnly="True">
<PropertiesDateEdit DisplayFormatString="MM/dd/yyyy">
</PropertiesDateEdit>
<HeaderStyle Font-Bold="True" />
</dx:GridViewDataDateColumn>
<dx:GridViewDataTextColumn FieldName="CustAssetNo" Caption="Asset No" ShowInCustomizationForm="True"
VisibleIndex="8" ReadOnly="True">
<HeaderStyle Font-Bold="True"></HeaderStyle>
</dx:GridViewDataTextColumn>
<dx:GridViewDataCheckColumn FieldName="Verified" Caption="Verified" ShowInCustomizationForm="True"
VisibleIndex="9" >
<HeaderStyle Font-Bold="True"></HeaderStyle>
<DataItemTemplate>
<dx:ASPxCheckBox ID="chk" runat="server" AutoPostBack="True" OnCheckedChanged="check_Changed" ClientInstanceName="chk" Enabled="True" >
</dx:ASPxCheckBox>
</DataItemTemplate>
</dx:GridViewDataCheckColumn>
<dx:GridViewDataTextColumn FieldName="VerifiedInitials" Caption="Initials" ShowInCustomizationForm="True"
VisibleIndex="10">
<HeaderStyle Font-Bold="True"></HeaderStyle>
</dx:GridViewDataTextColumn>
<dx:GridViewDataHyperLinkColumn FieldName="PDFName" Caption="PDF" ShowInCustomizationForm="True"
VisibleIndex="11" ReadOnly="True">
<HeaderStyle Font-Bold="True"></HeaderStyle>
<PropertiesHyperLinkEdit Target="_blank" Text="View">
<Style ForeColor="#1FB259"></Style>
</PropertiesHyperLinkEdit>
</dx:GridViewDataHyperLinkColumn>
</Columns>
<Settings ShowFilterBar="Visible" ShowFilterRow="True" ShowHeaderFilterButton="True" />
<SettingsText EmptyDataRow="Currently no Certificates available for your account." />
</dx:ASPxGridView>
我想獲得的CheckedChanged事件後面的代碼中調用的方法「Check_Changed」,但事件處理程序永遠不會被解僱。
這是我在後面的代碼check_Changed方法:
Protected Sub check_Changed(ByVal sender As System.Object, ByVal e As System.EventArgs)
'test to see if event handler is firing
MsgBox("Hey")
Dim cb As ASPxCheckBox = TryCast(sender, ASPxCheckBox)
Dim container As GridViewDataItemTemplateContainer = TryCast(cb.NamingContainer, GridViewDataItemTemplateContainer)
cb.ClientInstanceName = String.Format("cbCheck{0}", container.VisibleIndex)
cb.Checked = gvCustomerCertificates.Selection.IsRowSelected(container.VisibleIndex)
' creates a sql connection and opens it
Dim scSQLConnection As SqlConnection = New SqlConnection() With {.ConnectionString = ConfigurationManager.ConnectionStrings.Item("Main").ConnectionString}
scSQLConnection.Open()
' create a data table
Try
Dim sqlCommand As New SqlCommand() With {.CommandText = "INSERT INTO tblVerified VALUES (" + gvCustomerCertificates.Columns.Item("CertNo").ToString}
Dim daCommand As SqlDataAdapter = New SqlDataAdapter(sqlCommand)
daCommand.SelectCommand.Connection = scSQLConnection
sqlCommand.CommandTimeout = 0
sqlCommand.ExecuteNonQuery()
Catch ex As Exception
Finally
End Try
scSQLConnection.Close()
End Sub
目前,所有我想要做的就是讓MSGBOX出現這樣我才知道被觸發的情況下,我的最終目標是要插入一個記錄到數據庫中,當點擊複選框時,我將一條記錄插入到不同於綁定到gridview的表中的一個表中,所以我必須使用insert語句而不是將該字段綁定到表。
請讓我知道,如果你能幫忙,或者如果我需要澄清任何事情。 謝謝!
我不確定VB消息框是檢查ASP.NET環境中是否調用方法的正確方法。您是否在check_Changed方法中使用了斷點? – Filip