OnCheckedChanged 事件未触发 [英] OnCheckedChanged event not firing

查看:22
本文介绍了OnCheckedChanged 事件未触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有一列复选框的 GridView(GridView 的其余部分是从数据库填充的).我正在使用 AJAX 来执行不同的功能,我想知道我是否只是没有在正确的位置调用 OnCheckedChanged 事件.它应该包含在某种 UpdatePanel 中吗?我对所有这些如何工作仍然很陌生......基本上我的目标是在选中复选框时更改数据库中的位值.我知道如何做到这一点的逻辑,我只是​​不知道我是否以正确的方式处理我的 OnCheckedChanged 事件.

.CS

 protected void CheckBoxProcess_OnCheckedChanged(Object sender, EventArgs args){CheckBox checkbox = (CheckBox)sender;GridViewRow 行 = (GridViewRow)checkbox.NamingContainer;OrderBrowser.Text += "已更改";}}

.aspx

 <asp:ListItem Value="fName" Selected="True">名字</asp:ListItem><asp:ListItem Value="lName">姓氏</asp:ListItem><asp:ListItem Value="state">State</asp:ListItem><asp:ListItem Value="zip">邮政编码</asp:ListItem><asp:ListItem Value="cwaSource">Source</asp:ListItem><asp:ListItem Value="cwaJoined">加入日期</asp:ListItem></asp:DropDownList>

<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><asp:UpdatePanel ID = "up" runat="server"><触发器><asp:AsyncPostBackTrigger ControlID = "orderByList"EventName="SelectedIndexChanged"/><asp:AsyncPostBackTrigger ControlId="searchButton" EventName="点击"/></触发器><内容模板><div align="center"><asp:GridView ID="DefaultGrid" runat = "server" DataKeyNames = "fName"onselectedindexchanged = "DefaultGrid_SelectedIndexChanged"自动生成选择按钮 = "true"selectedindex="0"><SelectedRowStyle BackColor="Azure"前色=黑色"font-bold="true"/><列><asp:TemplateField HeaderText="已处理"><项目模板><asp:CheckBox ID="CheckBoxProcess" runat="server" Enabled="true" OnCheckedChanged = "CheckBoxProcess_OnCheckedChanged"/></ItemTemplate></asp:TemplateField></列></asp:GridView>

<asp:TextBox ID="OrderBrowser" columns="100" Rows="14" runat="server" Wrap="false" TextMode="MultiLine" ReadOnly = "true"></asp:TextBox></内容模板></asp:UpdatePanel>

</表单>

解决方案

尝试为复选框控件开启 AutoPostBack.

<asp:CheckBox ID="CheckBoxProcess" runat="server" Enabled="true" OnCheckedChanged = "CheckBoxProcess_OnCheckedChanged" AutoPostBack="true"/>

这可能是您的方法未被调用的原因.

I have a GridView with a column of checkboxes (the rest of the GridView is being populated from a database). I'm using AJAX to perform different functions, and I'm wondering if i'm just not calling the OnCheckedChanged event in the right place. Should it be wrapped in some sort of UpdatePanel? I'm still really new to how all of this works...basically what I'm aiming for is to change a bit value in my database when a checkbox is checked. I know the logic of how to do that, I just don't know if I'm addressing my OnCheckedChanged event the right way.

.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>

解决方案

Try turning AutoPostBack on for the checkbox control.

<asp:CheckBox ID="CheckBoxProcess" runat="server" Enabled="true" OnCheckedChanged = "CheckBoxProcess_OnCheckedChanged" AutoPostBack="true" />

This maybe the reason your method isn't being called.

这篇关于OnCheckedChanged 事件未触发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
C#/.NET最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆