【问题标题】:updating a user control in an asp.net update panel (based upon action in another user control)在 asp.net 更新面板中更新用户控件(基于另一个用户控件中的操作)
【发布时间】:2012-11-26 23:38:07
【问题描述】:

我在一个 aspx 页面上有 2 个更新面板,如下所示。 aspx 页面使用 UserControl 元素,该元素实现了一个带有显示在其上的页码列表的转发器。有 2 个页码列表,比如 L1 和 L2,一个在页面顶部,一个在底部。 (因此,aspx 页面上的 2 个用户控件 RevPaging1 和 RevPaging2)。

<%@ Register Src="../Controls/UseControl.ascx" TagName="UserControl" TagPrefix="uc1" %>

 <asp:UpdatePanel runat="server" ID="UpdatePanel1" UpdateMode="Conditional">
        <ContentTemplate>

        <div id="Div1" class="paging" runat="server" visible="false">
            <uc1:UserControl id="RevPaging1" runat="server" ShowResult="false">
            </uc1:UserControl>          
        </div>

         </ContentTemplate>
    </asp:UpdatePanel>   

    <asp:UpdatePanel runat="server" ID="UpdatePanel2" UpdateMode="Conditional">

         <ContentTemplate>

            <div id="Div2" class="paging" runat="server" visible="false">
                    <uc1:UserControl id="RevPaging2" runat="server" ShowResult="false">
                    </uc1:UserControl>          
            </div>          

       </ContentTemplate>

    </asp:UpdatePanel>

问题:如何确保当我点击“RevPaging1”上的任何页码时 ,页码在“RevPaging2”上自动更新为相同 我在 RevPaging1 上选择的编号(我没有点击的那个),同样,当我点击“RevPaging2”上的任何页码时,页码会自动更新到“RevPaging1”(我没有点击的那个)。

以下是 UserControl 的实现(在 2 更新上面的面板)。

<%@ Control Language="C#" AutoEventWireup="true" 
    CodeBehind="UserControl.ascx.cs" Inherits="Namespace.UserControl" %>

    <table>
        <tr>
            <td class="left">
                <p class="button2Left"></p>
                    <asp:Button ID="btPreviousPage" runat="server" cssclass="button2" 
                                 OnClick="btPreviousPage_Click" Text="Previous Page" />
                <p class="button2Right"></p>
            </td>
            <td class="middle">
            <asp:Repeater ID="pageNumbers" runat="server" OnItemCommand="pageNumbers_ItemCommand">
                <HeaderTemplate>
                    <ul>This is the header template</ul>
                </HeaderTemplate>
                <ItemTemplate>
                    <li class='<%#DataBinder.Eval(Container.DataItem,"PCssClass")%>'>
                        <asp:LinkButton ID="LinkButton1" CommandName="prefixLink" 
                                        CommandArgument='<%#DataBinder.Eval(Container.DataItem,"PText")%>' 
                                        runat="server" 
                                        Text='<%#DataBinder.Eval(Container.DataItem,"PText")%>' />
                    </li>
                </ItemTemplate>
                <FooterTemplate>
                      <ul>This is the footer template</ul>
                </FooterTemplate>
            </asp:Repeater>
            </td>

            <td class="right">
                <p class="button2Left"></p>
                    <asp:Button ID="btNextPage" cssclass="button2" runat="server" OnClick="btNextPage_Click" Text="Next Page" />
                <p class="button2Right"></p>
            </td>
        </tr>
    </table>

【问题讨论】:

  • 欢迎来到 StackOverflow!在发布此类具有更一般形式的问题时,最好将代码提炼到相关部分。如果人们不必解析这么多代码,他们更有可能提供帮助。
  • 请少发些代码,我觉得你发的一些代码是不必要的
  • 我很抱歉,我只是没有想法,这花费了太多时间......我刚刚编辑了我之前发布的代码的一部分。

标签: c# asp.net asp.net-ajax updatepanel


【解决方案1】:

当您处理单击控件中页码的事件时,有一个单独的函数使用数据更新两个面板/控件。

【讨论】:

  • 我尝试了这种方法,并在事件的订阅者(aspx 页面)中执行了 UpdatePanel1.update() 和 UpdatePanel2.update(),但没有成功。事件作为委托实现,转发器上的操作存储在 CustomEventArgs 类中,并分配了一个订阅者 - 这是我更新面板更新但没有运气的地方。
  • 你可以试试这个方法-stackoverflow.com/questions/12907075/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 2012-08-11
相关资源
最近更新 更多