UpdatePanel内的Repeater内部的ASP.NET按钮不会触发!

时间:2010-07-13 03:26:57

标签: ajax button updatepanel repeater

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然后,从图形上讲,该按钮不会在 正确的地方。它需要是ID为btnDiv的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>

AND MY PAGE LOAD CODE:

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);


            }

        }

再次感谢。

1 个答案:

答案 0 :(得分:0)

您是否尝试在按钮中设置click事件而不是从后面的代码处理它?<​​/ p>

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