【发布时间】: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