嗨,我发现代码与以下在线类似。将按钮埋在中继器控件中以触发整个周期返回服务器似乎真的很棒。

<asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>

        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <%=DateTime.Now.ToString() %>
            </ContentTemplate>
            <Triggers>
                <asp:PostBackTrigger ControlID="HiddenButton" />
            </Triggers>
        </asp:UpdatePanel>

        <!--Make a hidden button to treat as the postback trigger-->
        <asp:Button ID="HiddenButton" runat="server" Style="display: none" Text="HiddenButton" />


        <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
            <ItemTemplate>
                 <!--when cick the button1, it will fire the hiddenButton-->
                <asp:Button ID="Button1" Text="Trigger" CommandArgument='<%# Eval("Id") %>' OnClientClick="$get('HiddenButton').click();return false;"
                    runat="server" />
            </ItemTemplate>
        </asp:Repeater>

它通过将原始按钮的click事件挂接到该按钮上,使用hiddenButton来实现这一点。但是,我为此添加的是按钮的CommandArgument设置。我还需要为HiddenButton设置它。

有谁知道解决这个问题的方法吗?

最佳答案

首先,我将使用您发布的相同示例来解释使用 DisadvantageUpdate Panel

以下是原始代码



输出



要显示 22 个字符的字符串,您可以检查正在接收和发送到服务器的数据量。想象一下

  • 如果您考虑使用 Database 将每个请求发送到 Update Panel 并且您的 GridViewUpdate Panel 中!!!!!!
  • 假设您将对每个请求使用ViewState数据,并使用GridView Inside the Update Panel

  • 根据我的理解,上述两种技术都是最糟糕的。

    现在我将向您描述 Page Methods
    更新面板上的页面方法
    Page Methods允许ASP.NET AJAX页面使用Page’s Static Methods直接执行JSON (JavaScript Object Notation)。我们可以先使用receiving HTML markup仅请求我们感兴趣的信息,而不是先发布然后UpdatePanel’s contents完全替换我们的Web Method

    样例代码



    输出

    希望这清楚地解释了用法的差异。

    对原始查询的回答

    您必须注册以下 ItemDataBoundRepeater 事件并使用以下代码。

    背后的代码
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item ||
                               e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Button btn = (Button)e.Item.FindControl("Button1");
            btn.OnClientClick = string.Format("SubmitButton('{0}');return false;"
                                                            , HiddenButton.ClientID);
    
        }
    }
    

    JavaScript
    <script type="text/javascript">
         function SubmitButton(btn)
         {
             $("#" + btn).click();
         }
    </script>
    

    //选择
    <script type="text/javascript">
         function SubmitButton(btn)
         {
             document.getElementById(btn).click();
         }
    </script>
    

    Reference & Here

    关于asp.net - 从中继器控件更新面板和触发器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5709932/

    10-13 06:57