您好我发现以下代码类似于以下内容。将一个按钮埋在转发器控件中以触发一个完整的循环回到服务器似乎真的很棒。
<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>
它使用hiddenButton通过将原始按钮的click事件挂钩到此实现来实现此目的。但是我对此的补充是为按钮设置了CommandArgument。我还需要为HiddenButton设置它。
有没有人知道如何解决这个问题?
答案 0 :(得分:12)
首先,我想使用您发布的相同示例解释使用Disadvantage
的{{1}}。
要显示22个字符的字符串,您可以检查接收和发送到服务器的数据量。想象一下
Update Panel
向Database
发送每个请求,并且Update Panel
位于GridView
!!!!!! Update 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
的{{1}}事件,并使用以下代码。
ItemDataBound
Repeater
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);
}
}
答案 1 :(得分:0)
您的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);