【发布时间】:2009-12-09 19:11:53
【问题描述】:
我在带有单个中继器的页面内有用户控制。问题是当此控件放置在中继器复选框内时,不会触发 CheckedChanged 事件。如果这将是一个动态添加的控件,我将检查 CheckedCanged 事件是否在 Init() 中分配了句柄,但这里的事件是在 ascx 中指定的,所以我想 asp.net 负责在正确的位置进行所有分配。我在这里迷路了:/
顺便说一句。在中继器内放置单个复选框不会触发。但我至少可以在那里使用 OnItemCommand
用户控制
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="QuoteContainer.ascx.cs" Inherits="EhdSite.Controls.QuoteContainer" %>
<asp:TableRow runat="server" ID="trQuoteRow">
<asp:CheckBox runat="server" ID="cbxConfirm" AutoPostBack="true" OnCheckedChanged="CbxConfirmCheckedChanged" />
</asp:TableRow>
页面
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager2" runat="server" />
<asp:UpdatePanel runat="server" ID="upQuotes" UpdateMode="Conditional" ChildrenAsTriggers="false">
<ContentTemplate>
<asp:Repeater runat="server" ID="rptQuotes">
<ItemTemplate>
<ehd:QuoteContainer
runat="server"
ID="qcQuote"
RowCssClass="rowStyle"
HighlightedRowCssClass="selectedRowStyle"
Quote="<%# Container.DataItem %>"
OnQuoteSelectedChanged="QuoteSelectedChanged" />
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
【问题讨论】:
-
在什么情况下绑定中继器?如果您在 OnPreRender 中执行此操作,它肯定不会起作用!我需要查看用户控件和页面的代码隐藏,或者至少是其中关于转发器和 checkobx 的部分......
-
我将它移至 Page_Init 并开始工作。您能否将其解释为这个问题的答案,以便我给予您信任?
标签: asp.net