更新面板和来自转发器控件的触发器

| 嗨,我发现代码与以下在线类似。将按钮埋在转发器控件中以触发整个周期返回服务器似乎真的很棒。
<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设置它。 有谁知道解决这个问题的方法吗?
已邀请:
首先,我将使用您发布的相同示例来解释使用ѭ2的ѭ1。 以下是原始代码 输出量 要显示22个字符串,您可以检查正在接收和发送给服务器的数据量。试想以下 如果您考虑使用
Update Panel
将每个请求发送到
Database
,而您的
GridView
Update Panel
中!!!!!! 假设您对每个请求都使用
ViewState
数据,并使用
GridView Inside the Update Panel
数据。 根据我的理解,以上两种技术都是最糟糕的。 现在我来形容你
Page Methods
“更新时的页面方法”面板
Page Methods
允许
ASP.NET AJAX
页使用
JSON (JavaScript Object Notation)
直接执行
Page’s Static Methods
。我们可以先使用
Web Method
来索取我们感兴趣的信息,而不是先发帖再
receiving HTML markup
来完全替代我们的
UpdatePanel’s contents
。 样例代码 输出量 希望这能清楚解释用法的区别。 回答原始查询 您必须注册下面的
Repeater
ItemDataBound
事件,并为其使用以下代码。 背后的代码
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>
参考与此处
您的HiddenButton控件是服务器控件,但是您尝试使用它的ASP.Net ID在JQuery中访问它,
<asp:Button ID=\"Button1\" Text=\"Trigger\" CommandArgument=\'<%# Eval(\"Id\") %>\' OnClientClick=\"$get(\'**HiddenButton**\').click();return false;\" 
                runat=\"server\" /> 
解决此问题的快速方法是创建一个单独的功能,
<script type=\"text/javascript\">
function SubmitButton(btn)
{
     $get(\"#\" . btn).click(); 
}
</script>
并将您的按钮代码更改为,
<asp:Button ID=\"Button1\" Text=\"Trigger\" CommandArgument=\'<%# Eval(\"Id\") %>\' 
                runat=\"server\" /> 
在后面的代码中,在转发器的ItemDataBound事件中,找到按钮和HiddenControl并设置Button1 \的OnClientClick属性,
Button1.OnClientClick= string.Format(\"SubmitButton(\'{0}\');return false;\",HiddenButton.ClientID); 

要回复问题请先登录注册