2013-11-04 65 views
0

我遇到使用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語句而不是將該字段綁定到表。

請讓我知道,如果你能幫忙,或者如果我需要澄清任何事情。 謝謝!

+0

我不確定VB消息框是檢查ASP.NET環境中是否調用方法的正確方法。您是否在check_Changed方法中使用了斷點? – Filip

回答

0

我有一個類似的問題,沒有觸發selectedItemChanged事件dropdownlist。直到我發現,對我來說沒有任何幫助,IE11在某些事件上有問題。也許這是你的問題的簡短答案。

+0

我正在使用谷歌瀏覽器測試這個應用程序,我在方法中也有一個斷點,但我也使用了msgbox,控件在點擊時做了一個回發,但它從不碰到check_changed方法,謝謝你看看我的發佈任何你能告訴我的都是有幫助的。 – Taylor