UpdatePanel ASync PostBack麻烦

时间:2012-07-10 16:56:51

标签: c# asp.net .net ajax

我在C#/ ASP.NET应用程序中使用UpdatePanel时遇到一些问题。 我将首先发布我的代码,然后解释我的问题。

<asp:DropDownList ID="ddlSavedAddresses" runat="server" AutoPostBack="true">
<asp:ListItem Selected="True" Value="">Choose from your saved addresses: </asp:ListItem>
</asp:DropDownList>

<asp:UpdatePanel ID="upnlAddress" runat="server">
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="ddlSavedAddresses" EventName="SelectedIndexChanged" />
</Triggers>
 <ContentTemplate>
 <div>
    <div class="minWidth490 topMargin10">
        <fieldset>
        <div>
            <label for="buildingName">Building Name</label>
        </div>
        <div>
            <asp:Textbox runat="server" id="txtBuildingName" CssClass="short" ToolTip="Enter your house name here" />
        </div>
    </div>
  </ContentTemplate>
</asp:UpdatePanel>

以上是我的.ascx文件。

this.ddlSavedAddresses.SelectedIndexChanged += new EventHandler(ddlSavedAddresses_SelectedIndexChanged);

void ddlSavedAddresses_SelectedIndexChanged(object sender, EventArgs e)
{
    // in my code, I have a breakpoint in this method, which is being hit
    this.txtBuildingName.Text = "FOO";
}

我的实际代码中有更多的字段(我相信你已经收集了它),但它只是更多相同。

如上所述,事件正在触发,我在ddlSavedAddresses_SelectedIndexChanged中设置的任何断点都被命中。

我还在this.txtBuidlingName的.Text值上放了一个quickwatch,它看起来像预期的那样“FOO”,但是,网页呈现的文本框的实际值仍为空白。

这是我的问题。无论如何,价值仍然是空白。如果我多次触发事件(通过更改DropDownList的SelectedIndex),它只会为每个触发的事件填充','中的每个字段。

我相信我是短视的,这是微不足道的事情,但是,我感到茫然,非常感谢你的帮助。

2 个答案:

答案 0 :(得分:3)

从评论部分导入

  1. 在SelectedIndexChanged事件结束时添加upnlAddress.Update();
  2. UpdateMode="Conditional"添加到您的UpdatePanel定义。

答案 1 :(得分:2)

您似乎需要调用updatepanel的Update方法。 试试这个:

void ddlSavedAddresses_SelectedIndexChanged(object sender, EventArgs e)
{    
    this.txtBuildingName.Text = "FOO";
     upnlAddress.Update();
}