【问题标题】:ASP .NET Controlling updatepanel from repeater button in another updatepanelASP .NET 从另一个更新面板中的转发器按钮控制更新面板
【发布时间】:2009-07-26 21:29:04
【问题描述】:

我有两个更新面板,第一个更新面板 (up1) 包含一个重复器控件,它只是重复一个按钮控件。当在 up1 中单击其中一个按钮时,我只想使用从 up1 中的按钮传递的参数来更新第二个更新面板(up2)。 基本上,每个按钮都有一个对话 ID,因此当单击 up2 时,将从具有该 ID 的对话中获取所有消息。由于其他功能,需要有两个更新面板。

<asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" EnablePartialRendering="true" runat="server" >
</asp:ScriptManager>
<asp:UpdatePanel runat="server" ID="up1" OnLoad="up1_Load">
    <ContentTemplate>
        <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
                <asp:Button ID="Button1" runat="server"
                    CommandName="conversationID" 
                    CommandArgument='<%# Eval("conversation_id") %>' />
             </ItemTemplate>
        </asp:Repeater>
    </ContentTemplate>
</asp:UpdatePanel>

<asp:UpdatePanel ID="up2" runat="server">
    <ContentTemplate>
        <asp:Repeater ID="Repeater2" runat="server">
            <ItemTemplate>
                <p><%#Eval("message")%></p>
            </ItemTemplate>
        </asp:Repeater> 
    </ContentTemplate>
</asp:UpdatePanel>

我尝试在后面的代码中传递命令参数,但它不起作用!请有人能指出我正确的方向吗?

非常感谢

【问题讨论】:

    标签: asp.net ajax updatepanel


    【解决方案1】:

    查找 AsyncPostBackTriggers 作为一种让客户端控件触发 UpdatePanel 进行部分页面刷新的方法。我已经多次以这种方式将两个更新面板绑定在一起......

    <UpdatePanel>
       <Triggers>
         <asp:AsyncPostBackTrigger ControlID=”up1” />
       </Triggers>
       <ContentTemplate>
         ....
       </ContentTemplate>
    </UpdatePanel>
    

    我不记得是否可以将实际的 UpdatePanel 链接在一起,或者是否必须为 up1 UpdatePanel 中的每个转发器按钮添加触发规则

    【讨论】:

      【解决方案2】:

      由于 UpdatePanel 用于动态内容(例如 AJAX),因此更新第二个面板的最佳位置是在客户端(例如在 JavaScript 中)而不是在服务器的代码隐藏中。

      此外,如果您的 .aspx 文件中没有代码块,您的代码将会更简洁。例如,在后面的代码中为button1 声明一个Button 变量,并在页面的PageLoadPageInit 中设置CommandArgument 属性,而不是使用内联代码和Eval

      【讨论】:

      • 我尝试向按钮添加一个 onclick 事件,将对话 ID 号传递给 javascript 代码中的函数。然后这会在我的代码隐藏中调用一个方法来更新更新面板。例如: function CallMyMethod(cid) { PageMethods.MyMethod(cid, MyMethod_Result);问题是它调用的 webmethod 子例程必须“共享”才能进行通信,例如: _ Public Shared Sub MyMethod(ByVal CId As Integer) ..get sql data, bind to repeater in updatepanel2 End Sub
      • 这个问题是当我尝试绑定数据时出现以下错误:无法从共享方法中引用类的实例成员
      猜你喜欢
      • 2013-06-29
      • 1970-01-01
      • 2017-09-05
      • 1970-01-01
      • 2013-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多