【问题标题】:ASP.NET Button Inside Repeater Inside UpdatePanel Won't Fire!UpdatePanel 内Repeater 内的ASP.NET 按钮不会触发!
【发布时间】:2010-07-13 03:26:56
【问题描述】:

ASP.NET 3.5 SP 1 / Visual Studio 2008 V 9.x RTM

我试图让更新面板内的中继器内的按钮触发。 我不会。我尝试在 ContentTemplate 外部和内部添加触发器 UpdatePanel 无济于事:

 <Triggers>  
        <asp:AsyncPostBackTrigger ControlID="BtnAddStatus" EventName="Click" />  
    </Triggers> 

事实上,AsyncPostBackTrigger 的 ControlID 始终是红色的,并告诉我“无法解析符号”。无论我在页面的哪个位置放置触发器,情况似乎都是如此。

我已阅读通过将按钮放在外面来解决此问题的帖子 UpdatePanel,但从图形上讲,该按钮将不在 正确的位置。它需要是具有 btnDiv ID 的 DIV。

那么...如何让下面的按钮触发?

<asp:Button ID="BtnAddStatus" CssClass="small button Detail" Text="Share" runat="server" />

ASPX代码如下:

<asp:Content ContentPlaceHolderID="ContentCenter" runat="server">
    <asp:UpdatePanel ID="UpdatePanel1"  UpdateMode="Always" runat="server">
        <ContentTemplate>
            <asp:Label ID="lblMessage" runat="server"></asp:Label>
            <asp:Repeater ID="repFilter" runat="server" 
                onitemcommand="RepFilterItemCommand">
                <HeaderTemplate>
                    <div class="UIComposer_Box">
                        <span class="w">
                            <asp:TextBox class="input" ID="txtStatusUpdate" TextMode="MultiLine" Columns="60"
                                name="txtStatusUpdate" Style="overflow: hidden; height: 40px; color: rgb(51, 51, 51);"
                                runat="server"></asp:TextBox>
                        </span>
                        <br clear="all">
                        <div id="btnDiv" style="padding: 10px 5px; height: 30px;" align="left">
                            <span style="float: left;">&nbsp;PHP, Codeigniter, JQuery, AJAX Programming + 
                            Tutorials ( <a href="http://www.x.info" target="_blank" style="color: rgb(236, 9, 43);">
                                    www.x.info</a> )&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; </span>
                            <asp:Button ID="BtnAddStatus" CssClass="small button Detail" Text="Share" runat="server" />
                        </div>
                    </div>
                </HeaderTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label1" Text='<%# ((Alert)Container.DataItem).Message  %>' runat="server"></asp:Label>
                </ItemTemplate>
                <FooterTemplate>
                    <br class="clear" />
                </FooterTemplate>
            </asp:Repeater>
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Content>

和我的页面加载代码:

protected void Page_Load(object sender, EventArgs e)
        {
            _presenter = new DefaultPresenter();
            _presenter.Init(this);
        }

和 BtnStatusClick 方法:

protected void BtnAddStatusClick(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                var su = new StatusUpdate
                             {
                                 CreateDate = DateTime.Now,
                                 AccountId = _userSession.CurrentUser.AccountId,
                                 Status = "" //txtStatusUpdate.Text
                             };

                _statusRepository.SaveStatusUpdate(su);
                _alertService.AddStatusUpdateAlert(su);

                _presenter = new DefaultPresenter();
                _presenter.Init(this);


            }

        }

再次感谢。

【问题讨论】:

  • 嗯...没有其他回应?还有什么我可以补充或澄清的吗?
  • 它是“视图”——基本上是连接前端显示的方法。它的内容显示状态更新如下: _view.ShowAlerts(_alertService.GetAlertsByAccountId(_userSession.CurrentUser.AccountId));我认为我的问题与此无关,但我愿意在这一点上探索任何事情......

标签: ajax button updatepanel repeater


【解决方案1】:

您是否尝试过在按钮中设置点击事件,而不是从后面的代码中处理?

<asp:Button OnClick="BtnAddStatusClick" ID="BtnAddStatus" CssClass="small button Detail" Text="Share" runat="server" />

【讨论】:

  • 感谢您的回复...我应该将 OnClick 事件添加到我的原始帖子中...感谢您的关注。我已经尝试了两种方式 - 从后面的代码处理并设置点击事件......在这两种情况下都没有发生任何事情。
猜你喜欢
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多