未选中时,OnCheckedChanged不会触发

时间:2014-07-15 15:47:24

标签: asp.net vb.net gridview checkbox

我已经尽可能多地搜索了这个主题,我发现了类似的主题甚至是stackoverflow,但没有人能够解决我的问题。我有一个嵌套的gridview绑定到sqldatasource,它填充了几个字段以及来自'比特的复选框字段。数据库中的字段。复选框从数据库中正确填充(已选中与未选中),但我的' OnCheckedChanged'事件仅在我选中一个复选框时触发,但在取消选中时不会触发,该页面只会通过其回发。我有' EnableViewState'在母版页,本地页面和控件上设置为true以及自动回发。我需要做的是使用复选框的新值(已检查vs未选中)更新数据库并重新加载。如果有人有任何建议,请告诉我。

Protected Sub Gridview3_OnCheckedChanged(Sender As Object, e As EventArgs)
    Dim checkbox As CheckBox = TryCast(Sender, CheckBox)
    Dim gridview3 As GridView = checkbox.Parent.Parent.Parent.Parent
    Dim row As GridViewRow = checkbox.Parent.Parent
    sql_insert(String.Format("UPDATE [STOREIT2-PORTAL].dbo.AA5VOLUMES SET PROTECTED = '{0}' WHERE GUID = '{1}' AND AGENTID = '{2}'", checkbox.Checked, gridview3.DataKeys(row.RowIndex).Values("GUID").ToString, gridview3.DataKeys(row.RowIndex).Values("AgentID").ToString))
End Sub

<asp:GridView ID="Gridview3" EnableViewState="true" runat="server"  AutoGenerateColumns="False" DataKeyNames="AgentID,GUID" OnRowDataBound="GridView3_OnRowDataBound" RowStyle-CssClass ="row" AlternatingRowStyle-CssClass="altrow" RowStyle-HorizontalAlign="Center" CssClass="gvmain"> <AlternatingRowStyle CssClass="altrow"></AlternatingRowStyle>
       <columns>
           <asp:BoundField DataField="AgentID" HeaderText="AgentID" SortExpression="AgentID" visible="false"/>
           <asp:BoundField DataField="GUID" HeaderText="GUID" SortExpression="GUID" visible="false"/>
           <asp:BoundField DataField="VolumeName" HeaderText="VolumeName" SortExpression="VolumeName" readonly="true"/>
           <asp:BoundField DataField="Label" HeaderText="Label" SortExpression="Label" nulldisplaytext="<i>{No Label}</i>" readonly="true"/>
           <asp:BoundField DataField="BaseCount" HeaderText="BaseCount" SortExpression="BaseCount" nulldisplaytext="<i>{No Base Images}</i>" readonly="true"/>
           <asp:BoundField DataField="TimeStamp" HeaderText="TimeStamp" SortExpression="TimeStamp" nulldisplaytext="<i>{Volume has no recent snapshots}</i>" readonly="true"/>
           <asp:TemplateField headertext="Protected">
              <ItemTemplate>
                 <asp:CheckBox ID="Protected" EnableViewState="true" runat="server" autopostback="true" checked='<%# Eval("Protected")%>' OnCheckedChanged="Gridview3_OnCheckedChanged"/>  
              </ItemTemplate>
           </asp:TemplateField>
       </columns>
</asp:GridView>   

1 个答案:

答案 0 :(得分:0)

我注意到您的代码没有&#39;处理条款&#39;也许这会引起你提到的问题。 。

Handles CheckBox1.CheckedChanged