3

C#/ASP.NETアプリケーションでUpdatePanelsを使用すると問題が発生します。最初にコードを投稿してから、問題について説明します。

<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値にもクイックウォッチを配置すると、期待どおりに「FOO」のように見えますが、Webページがレンダリングしたテキストボックスの実際の値は空白のままです。

これが私の問題です。何があっても、値は空白のままです。(DropDownListのSelectedIndexを変更して)イベントを複数回発生させると、発生するすべてのイベントについて、の各フィールドに「、」が入力されるだけです。

私は近視眼的であり、これはごくわずかなことだと思いますが、私は途方に暮れており、あなたの助けを大いに感謝します。

4

2 に答える 2

3

コメントセクションからインポート

  1. upnlAddress.Update();SelectedIndexChangedイベントの最後に追加します。
  2. UpdateMode="Conditional"UpdatePanel定義に追加します。
于 2012-07-10T17:13:17.360 に答える
2

updatepanelのUpdateメソッドを呼び出す必要があるようです。これを試して :

void ddlSavedAddresses_SelectedIndexChanged(object sender, EventArgs e)
{    
    this.txtBuildingName.Text = "FOO";
     upnlAddress.Update();
}
于 2012-07-10T17:04:30.347 に答える