【问题标题】:Checkbox inside user control in repeater doesn't fire中继器中用户控件内的复选框不会触发
【发布时间】: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


【解决方案1】:

这与 ASP.Net 中的事件链有关,MSDN page 有助于理解它。

.Net 框架解析了Init- 和Load- 事件之间的ViewState。因此,如果在Init-事件之后控件不存在,它的ViewState 将永远不会被加载,它的事件也永远不会被触发。

这有时会变得相当棘手,尤其是如果一个动态加载的控件会影响另一个控件的加载...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多