我有一个带有多个复选框的gridview,有时40多个。我希望复选框在单击时在后面的代码中调用.net函数。通常,如果复选框位于gridview之外,这将很简单。但是因为它们在gridview中并且我不知道有多少,我在运行之前不知道它们的id。
我现在正在点击一个复选框,jQuery脚本返回复选框的id和值。不幸的是,我不知道如何将值传递给函数 - 这将反过来更新另一个gridview。
AFAIK我唯一的选择是在页面加载之前获取控件的id(复选框),然后以编程方式添加到更新面板的更新触发器部分。有没有其他方法可以说'如果点击任何复选框,运行这个'?
答案 0 :(得分:2)
使用CSS选择器作为复选框,并调用__doPostBack
刷新面板,例如为每个复选框分配一个CSS类checkboxes
,然后添加脚本:
$('#checkboxes').change(function() {
__doPostBack('<%=UpdatePanel1.UniqueID%>');
}
如果您对导致刷新的复选框的ID感兴趣,可以将其传递回代码:
$('#checkboxes').change(function() {
__doPostBack('<%=UpdatePanel1.UniqueID%>',$(this).attr('id'));
}
第二个参数将以Request.Form["__EVENTARGUMENT"]
的形式提供。你可以在这里放任何你想要的东西,例如如果需要,您还可以包含复选框的状态。第一个是__EVENTTARGET
,但您不需要直接使用它。当它与UpdatePanel的唯一ID匹配时,只会刷新该面板。
答案 1 :(得分:1)
您可以使用UpdatePanel.ChildrenAsTriggers。
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true"">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server">
...
...
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
答案 2 :(得分:1)
在这种情况下,我通常有一个HiddenField和一个style='display:none;'
的按钮,并将其设置为UpdatePanel的触发器。
不同的控件会在你提到的时候调用一个jQuery的东西,根据哪个控件引发它来更新HiddenField的正确值(这是你案例中的复选框)。
然后,它将单击CSS隐藏按钮($('#<%=myButton.ClientID %>').click();
)。这应该会触发UpdatePanel的更新,我也可以在按钮服务器端Click事件中执行任何我想要的逻辑。