OnCheckedchanged事件未触发

时间:2014-02-28 05:17:36

标签: c# asp.net oncheckedchanged

我在网格视图中添加复选框代码示例在这里

<asp:TemplateField HeaderText="N/A" SortExpression="NotAvailableQuantity">
            <ItemTemplate>
             <asp:CheckBox ID="chk_NA_ItemTemp" Enabled="false" Checked='<%# Bind("StockAvailable") %>' runat="server" />
            </ItemTemplate>
               <EditItemTemplate>
                 <asp:CheckBox ID="chk_NA_EditTemp"  runat="server" />
     </EditItemTemplate>
           <FooterTemplate>
                <asp:CheckBox ID="chk_NA_FootTemp" ClientIDMode="Static" OnCheckedChanged="OnChkChangd_chk_NA_FootTemp" AutoPostBack="true"  runat="server" />
          </FooterTemplate>
            <HeaderStyle HorizontalAlign="right" />
             <ItemStyle HorizontalAlign="right" />
          </asp:TemplateField>

我将CS文件中的已检查更改事件添加为

protected void OnChkChangd_chk_NA_FootTemp(object sender, EventArgs e)
        {
            CheckBox chk = (CheckBox)sender;
            GridViewRow row = (GridViewRow)chk.Parent.Parent;
            if (chk.Checked == true)
            {
                ((Label)row.FindControl("Footer_txt_AvailableQuantity")).Text = DateTime.Now.ToString();
            }
            else 
            {
            }                
        }    

但是我收到了这个错误。

不包含'OnChkChangd_chk_NA_FootTemp'的定义,并且没有扩展方法'OnChkChangd_chk_NA_FootTemp'可以找到接受类型'ASP.setup_saleablestock_aspx'的第一个参数(你是否缺少using指令或汇编引用?)

4 个答案:

答案 0 :(得分:0)

您已将错误的事件绑定到复选框。

OnCheckedChanged="OnChkChangd_chk_NA_FootTemp_CheckedChanged"添加到您的checkbox

<asp:CheckBox ID="chk_NA_FootTemp" ClientIDMode="Static" OnCheckedChanged="OnChkChangd_chk_NA_FootTemp_CheckedChanged" AutoPostBack="true"  runat="server" />

答案 1 :(得分:0)

标记与代码隐藏之间的事件名称不同:

OnChkChangd_chk_NA_FootTemp_CheckedChanged vs OnChkChangd_chk_NA_FootTemp

修复一个或另一个以使名称匹配。

答案 2 :(得分:0)

您的活动名称是

protected void OnChkChangd_chk_NA_FootTemp_CheckedChanged(object sender, EventArgs e)

因此,请更改复选框OnCheckedChanged="OnChkChangd_chk_NA_FootTemp_CheckedChanged"

的活动名称
<asp:CheckBox ID="chk_NA_FootTemp" ClientIDMode="Static" OnCheckedChanged="OnChkChangd_chk_NA_FootTemp" AutoPostBack="true"  runat="server" />

它应该是OnCheckedChanged="OnChkChangd_chk_NA_FootTemp_CheckedChanged"

<asp:CheckBox ID="chk_NA_FootTemp" ClientIDMode="Static" OnCheckedChanged="OnChkChangd_chk_NA_FootTemp_CheckedChanged" AutoPostBack="true"  runat="server" />

你提到过“AutoPotsBack = true”所以请调用你的活动!IsPostBack

if (!IsPostBack) 
{
\\Grid view event
}

答案 3 :(得分:0)

我看到了你的代码,你的代码看起来很好,我不知道为什么它不起作用。

但我想,你错过了一件事。

问题

  

在控制事件触发之前调用DataBind时会出现问题

解决方案

  

您需要添加! IspOstBack 在你的页面内部加载事件。你必须调用!IsPostBack中的网格绑定代码。因为您在复选框中使用了AutoPotsBack = true,这有助于调用(重新加载)页面加载。因此,如果您不使用!IsPostBack,那么您的网格将重新绑定,您的复选框将重新呈现。因此,改变事件不会发生。

所以请用这种方式

void page_load()    
{
   if(!IsPostBack)
  {
   // call Grid view Binding code here 
  }
}

如果我的解决方案无效,请尝试以下方法

OnCheckedChanged event not firing in GridView at all