OnCheckedChanged 事件未触发
Posted
技术标签:
【中文标题】OnCheckedChanged 事件未触发【英文标题】:OnCheckedChanged event not firing 【发布时间】:2011-09-29 14:52:00 【问题描述】:我有一个带有一列复选框的 GridView(GridView 的其余部分是从数据库中填充的)。我正在使用 AJAX 执行不同的功能,我想知道我是否只是没有在正确的位置调用 OnCheckedChanged 事件。是否应该将其包装在某种 UpdatePanel 中?我对所有这些工作方式仍然很陌生......基本上我的目标是在选中复选框时更改我的数据库中的位值。我知道如何做到这一点的逻辑,我只是不知道我是否以正确的方式处理我的 OnCheckedChanged 事件。
.CS
protected void CheckBoxProcess_OnCheckedChanged(Object sender, EventArgs args)
CheckBox checkbox = (CheckBox)sender;
GridViewRow row = (GridViewRow)checkbox.NamingContainer;
OrderBrowser.Text += "CHANGED";
.aspx
<html xmlns="http://www.w3.org/1999/xhtml">
<asp:DropDownList runat="server" ID="orderByList" AutoPostBack="true">
<asp:ListItem Value="fName" Selected="True">First Name</asp:ListItem>
<asp:ListItem Value="lName">Last Name</asp:ListItem>
<asp:ListItem Value="state">State</asp:ListItem>
<asp:ListItem Value="zip">Zip Code</asp:ListItem>
<asp:ListItem Value="cwaSource">Source</asp:ListItem>
<asp:ListItem Value="cwaJoined">Date Joined</asp:ListItem>
</asp:DropDownList>
</div>
<div>
<asp:Label runat="server" ID="searchLabel" Text="Search For: " />
<asp:TextBox ID="searchTextBox" runat="server" Columns="30" />
<asp:Button ID="searchButton" runat="server" Text="Search" />
</div>
<div>
<asp:UpdatePanel ID = "up" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID = "orderByList"
EventName="SelectedIndexChanged" />
<asp:AsyncPostBackTrigger ControlId="searchButton" EventName="Click" />
</Triggers>
<ContentTemplate>
<div align="center">
<asp:GridView ID="DefaultGrid" runat = "server" DataKeyNames = "fName"
onselectedindexchanged = "DefaultGrid_SelectedIndexChanged"
autogenerateselectbutton = "true"
selectedindex="0">
<SelectedRowStyle BackColor="Azure"
forecolor="Black"
font-bold="true" />
<Columns>
<asp:TemplateField HeaderText="Processed">
<ItemTemplate>
<asp:CheckBox ID="CheckBoxProcess" runat="server" Enabled="true" OnCheckedChanged = "CheckBoxProcess_OnCheckedChanged" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
<asp:TextBox ID="OrderBrowser" columns="100" Rows="14" runat="server" Wrap="false" TextMode="MultiLine" ReadOnly = "true">
</asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
【问题讨论】:
【参考方案1】:请尝试使用数据库检查值:
Checked='<%# Convert.ToBoolean(Eval("Processed"))
%>'
【讨论】:
【参考方案2】:尝试为复选框控件打开 AutoPostBack。
<asp:CheckBox ID="CheckBoxProcess" runat="server" Enabled="true" OnCheckedChanged = "CheckBoxProcess_OnCheckedChanged" AutoPostBack="true" />
这可能是您的方法没有被调用的原因。
【讨论】:
当我这样做时,检查会出现 2 秒钟,然后消失。会不会因为我没有处理数据库中的任何内容而导致这种情况?我希望它是当数据库中有某个值时,检查出现或消失。但是,我的测试代码也没有显示正在调用该方法... 可能,值得输入一些虚拟数据来检查功能。 我正在测试它,但测试根本没有显示任何东西:(以上是关于OnCheckedChanged 事件未触发的主要内容,如果未能解决你的问题,请参考以下文章
在自定义控件中,有CheckBox控件,当触发OnCheckedChanged事件时
OnCheckedChanged事件根本没有在GridView中触发
为啥android的checkbox的setChecked方法不触发onCheckedChanged事件
关于uniapp的事件监听,使用uni.$once和uni.$on导致的重复监听
android onCheckedChanged 用于无线电组
android开发中switch在切换开/关状态时,先弹出一个dialog(确认/取消)以让用户确认是不是切换开/关状态