【问题标题】:OnCheckedChanged event doesn't fire when check the checkbox in asp:checkbox选中 asp:checkbox 中的复选框时不会触发 OnCheckedChanged 事件
【发布时间】:2015-08-11 15:30:07
【问题描述】:

我的工作中有一个嵌套中继器。我负责在下面的每个中继器项目上添加 asp:checkbox,以便我们可以通过复选框来控制每个项目。

标记代码是:

<ItemTemplate>
  <li class="<%# GetCategoryClass(Container.DataItem) %> cl-li">    
    <asp:CheckBox runat="server" ID="checkBox" AutoPostBack="true" OnCheckedChanged="CheckedChanged" />
    <a class="cl-a excludeLink" visible='<%# GetCategoryClass(Container.DataItem) == "DISPLAYED" %>' href="<%# GetExcludeCategoryCommand(Container.DataItem) %>" runat="server" id="butExclude">x</a>
    <a class="cl-a" href="<%# GetCategoryCommand(Container.DataItem) %>" runat="server" id="butCategory"><%# GetCategoryTitle(Container.DataItem, true) %></a>
  </li>
</ItemTemplate>

c#代码为:

protected void CheckedChanged(object obj, EventArgs e)
{
    // some works    
}

我开始解决这个问题,发现 CheckedChanged 函数没有通过调试触发。但是,当我在

中添加一行时
if(IsPostBack){
   CheckedChanged(sender, e);  //add
}

当我调试时它可以工作并进入 CheckedChanged 函数。 我读过很多文章,没有一篇说我需要在 IsPostBack 块中添加该行。有没有人可以告诉我它的原理?

【问题讨论】:

  • 您说您正在“添加” asp:checkbox 到每个转发器项目。这是否意味着您正在以编程方式执行此操作?这是怎么回事。您在此处向我们展示的标记是如何添加到转发器项目中的?还是在项目模板中已经存在?
  • @GiliusMaximus 我更改了标记代码,只需添加一个复选框控件。
  • 我想我找到了解决它的方法,但感谢大家关注这个问题。解决方案:stackoverflow.com/questions/9527908/… 对我来说看起来不错。

标签: c# asp.net checkbox repeater


【解决方案1】:

您的代码应该可以工作。这取决于你是怎么写的。

我做了一个有效的例子:

Default.aspx

<table>
<asp:Repeater ID="RepeaterCB" runat="server">
<ItemTemplate>
     <tr>
         <td><%# Container.DataItem %></td>
         <td><asp:CheckBox runat="server" OnCheckedChanged="OnCheckedChange" AutoPostBack="true"/></td>
      </tr>
</ItemTemplate>
</asp:Repeater>
</table>

Default.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        RepeaterCB.DataSource = new List<string> { "tom", "fred", "pijule" };
        RepeaterCB.DataBind();
    }

}

protected void OnCheckedChange(object sender, EventArgs e)
{
    Response.Write("<script>alert('Fire');</script>");
}

每次我选中或取消选中文本框时,此代码都会触发警报。

希望对你有帮助。

【讨论】:

  • 谢谢@dramixx ,我认为我的代码应该可以工作,但除非我添加那行,否则它不会。页面加载功能中的某些内容可能是关键。无论如何,谢谢。
  • 没问题,为你高兴。您现在可以接受答案以通知它已解决。
猜你喜欢
  • 1970-01-01
  • 2019-04-13
  • 2016-04-13
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-02
相关资源
最近更新 更多