0

我有两个更新面板。一个UpdatePanel有一个CheckBox和一个UserControl。UserControl 有一些TextBoxes. 在其他更新面板中,很少有Labels.

我已将 javascript 函数添加到复选框以隐藏/显示它。我正在使用 Javascript 来避免部分回发到服务器。

当复选框被选中/取消选中或某些数据在用户控件的文本框中发生更改时,我还想更新第二个 UpdatePanel。

我可以在同一个复选框上调用 javascript 函数和服务器端函数吗?我尝试将触发器添加到第二个更新面板,但它们没有被触发。

updatepanel1
  checkbox 
  usercontrol
    textbox1
    texbox2

updatepanel2
   label1 (updated on change of textbox 1)
   label2 (updated on change of textbox 1)

我的复选框标记看起来像这样

 <asp:CheckBox ID="chkShippingSameAsBilling" runat="server" 
     Text="  Ship to same address"
     AutoPostBack="true" Checked="true" 
     onclick="return ShowShippingAddress();" 
 />
4

3 回答 3

1

您可以在页面上添加一个虚拟按钮。为按钮上的第二个面板设置异步回发触发器。

<asp:AsyncPostBackTrigger ControlID="btnAsync" EventName="Click" />

在复选框的检查更改中,在javascript调用函数中

btnAsync.Click();

它将异步回发第二个更新面板。您可以从第二个面板回发或通过将服务器端点击事件添加到虚拟按钮来调用服务器端函数。

于 2012-06-22T07:19:24.987 回答
0

您需要在第二个面板中设置触发器以使用复选框中的事件,这里有一些示例。

http://www.asp.net/web-forms/tutorials/aspnet-ajax/understanding-asp-net-ajax-updatepanel-triggers

通过不同 ContentPlaceHolder 中的控件触发 UpdatePanel 的更新

另外,看看knockout.jsjquery以获得一些更优雅的解决方案......

http://knockoutjs.com/

于 2012-06-22T07:25:07.123 回答
0

在第二个 updatePanel 中放置一个隐藏按钮:

<div style="display:none">
   <asp:Button ID="YourButton" runat="server" />
</div>

然后使用您的 onclick 功能单击:

function ShowShippingAddress() 
{
     document.getElementById('<%# YourButton.ClientID %>').click()
}

这应该会导致第二个回发和更新。

于 2012-06-22T07:19:37.513 回答