0

我的代码如下。

  <div class="table">
       <asp:UpdatePanel runat="server" ID="labelPanel" UpdateMode="Conditional"  >
           <ContentTemplate>
                 <asp:Label Text="" runat="server" ID="Cost"></asp:Label>
           </ContentTemplate>
       </asp:UpdatePanel>

      <uc1:ucPartsListing ID="ucPartsListing" runat="server" />

  </div>

现在用户控件 ucPartsListing 本身有 2 个更新面板。在某些条件下,用户控件向父 aspx 触发了一个事件。
在那种情况下,我正在尝试设置 aspx 文件中存在的标签值。我从代码隐藏手动调用更新。然而它不起作用。我哪里错了?

 public partial class PartsEnquiry : BaseAuthPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ucPartsListing.OnQuotePartsItemSelect += new ascx.ucPartsListing.QuotePartsItemEventHandler(ucPartsListing_OnQuotePartsItemSelect);
    }

    void ucPartsListing_OnQuotePartsItemSelect(string price)
    {
        Cost.Text = price;  //This is not working !

        labelPanel.Update();
    }
4

2 回答 2

0

在“void ucPartsListing_OnQuotePartsItemSelect(string price)”方法上设置一个断点,看看它是否被击中。我不确定您使用的是什么用户控件,但是无论应该触发事件的控件是什么,请尝试将其 AutoPostBack 属性设置为 True。

于 2012-08-15T02:34:08.043 回答
0

我认为您对当前的结构不走运。

当您的用户控件内部的 UpdatePanel 在浏览器中被触发时,它将更新其内部的页面部分。您不能更新执行 UpdatePanel 之外的控件。

手动调用Update()外部 UpdatePanel 上的方法将无济于事,因为在客户端上它仍然是接收输出并更新 html 树的内部 UpdatePanel 之一。

为了让它工作,你必须以某种方式触发外部 UpdatePanel,它能够更新 Cost 标签。

于 2012-08-15T11:01:00.840 回答