【问题标题】:OnCheckChanged not Firing when UncheckedOnCheckChanged 未选中时不触发
【发布时间】:2014-09-05 21:49:25
【问题描述】:

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

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>   

【问题讨论】:

    标签: asp.net vb.net gridview checkbox


    【解决方案1】:

    我注意到您的代码没有“句柄子句”也许这导致了您提到的问题。 . .

    Handles CheckBox1.CheckedChanged
    

    【讨论】:

    • 我认为问题在于当页面进行回发时,sqldatasource 正在重新创建复选框并为其分配原始值。我似乎可以在页面发布之前获取该值并更新 SQL DB,但我会丢失它。
    猜你喜欢
    • 2013-03-09
    • 2023-01-29
    • 2014-09-15
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    相关资源
    最近更新 更多