2010-08-11 71 views
1

全部都是AJAX更新面板 - 动作按钮点击下拉选择

我有以下情况。我有一个clietn可以选择的下拉菜单。下面的代码被封装在更新面板中,但没有这个,按钮点击会触发一种方法来检索产品的数量。例如,从ddlCategory中选择一个项目,点击btnValidate并且标签返回该类别内的产品数量。

我有更新面板的以下代码 - 我只是不知道如何有效地实现。

<asp:UpdatePanel ID="UpdatePanel1" runat="Server"> 
      <ContentTemplate> 

     <asp:Label ID="lblSearchResultsStatus" runat="server" Text="Number of results found: "></asp:Label> 
     <asp:Label ID="lblSearchResults1" runat="server" Text=""></asp:Label> 
      <br /> 
     <br /> 
     <asp:Button ID="btnValidate" runat="server" Text="Validate Search" 
       OnClick="btnValidate_Click" Width="120px" /> 
       </ContentTemplate> 
      </asp:UpdatePanel> 

我该如何去布线更新面板,以便当选择下拉列表项时,有效点击按钮?

是否必须在每个ddlSelectedIndexChanged事件上实现某些内容,或者在更新面板中是否有属性?

关于noob问题的道歉。

回答

1

在UpdatePanel的一点是与AsyncPostBack,而不是重新加载整个页面来更新页面的一部分,但在为了让下拉列表自动触发AsyncPostBack,它们必须位于UpdatePanel上。为了更新标签,它们必须与标签位于同一个UpdatePanel上。

一种常见的模式来实现你想要完成的任务:

  • 把上的DDL在UpdatePanel,并在每个DDL设置的AutoPostBack =“真”,所以他们触发AsyncPostBacks。
  • 为每个DDL上的SelectedIndexChanged添加一个事件处理程序(可以是相同的事件处理程序)。
  • 将你在btnValidate_Click中做的任何事情移到另一个方法。
  • 从btnValidate_Click和SelectedIndexChanged事件处理程序中调用新方法,以使它们都执行相同的功能。
0

您可以在任何地方调用从代码隐藏你的btnValidate_Click事件,即Page_Load中

protected void Page_Load(object sender, EventArgs e) 
{ 
    btnValidate_Click(btnValidate, new EventArgs()); 
} 
+0

干杯马尔科 - 我敢肯定,我可以清理这件事,为一个闪光灯来演示这个,这是盛大的。 谢谢。 – 2010-08-11 20:03:59

+0

不客气:)请接受答案,如果它帮助你。谢谢!! – Marko 2010-08-11 21:04:49

+0

对不起马可 - 虽然这是我做的方式(在我的演示中强制它),但我会使用Nekno建议的方法。 但是,+1帮助和调用按钮单击操作。 – 2010-08-12 15:32:50