1

以下は私の ASPX コードです。

<form id="form1" runat="server">
  <div>
   <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
   <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
   <asp:UpdatePanel UpdateMode="Conditional" ID="UpdatePanel1" runat="server">
   <ContentTemplate>
     <asp:Label ID="lblid" runat="server" Text="Label"></asp:Label>
   </ContentTemplate>
   </asp:UpdatePanel>
   <asp:Button ID="btnid" runat="server" Text="Button"/>
  </div>
</form>

1 つの更新パネル コントロールがあり、更新パネル コントロール内に単一のラベル コントロールが含まれています。更新パネル コントロールの外に Button と Lable があり、page_load 中に次のように両方の lable コントロールのテキスト値を更新します。

protected void Page_Load(object sender, EventArgs e)
{
  lblid.Text = DateTime.Now.ToString();
  Label1.Text = DateTime.Now.ToString();
}

Update mode プロパティを「Conditional」に設定して、Update パネルの外側の Button コントロールがユーザーによってクリックされたときに、ipdate パネル内の lable のテキスト値を変更しないようにしました。ただし、更新パネル内のラベル テキストの変更された値を更新して表示します。私の理解では、更新モード プロパティを「条件付き」に設定すると、更新パネルの外側のコントロールによるポストバックがある場合、更新パネル内のコンテンツは更新されません (またはクライアント側でレンダリングされます)。

4

2 に答える 2

3

UpdatePanel の外側のボタンをクリックすると、ページ全体がポストバックされます。UpdatePanel は、ページ全体がポストバックされている場合に、その中のコンテンツが更新されるのを防ぐことはできません。

于 2013-04-10T12:27:59.977 に答える
0

updatepanel が 1 つしかない場合は意味がありません。意味のあるこの例を参照してください。
Conditional から Always
ASPXに変更して、2 番目の updatepanel をいじってみてください。

<asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
<div>

    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    <asp:UpdatePanel  ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Label ID="lblid" runat="server" Text="Label"></asp:Label>
            <asp:Button ID="btnid" runat="server" Text="Button" />
        </ContentTemplate>
    </asp:UpdatePanel>

    <asp:UpdatePanel UpdateMode="Conditional"  ID="UpdatePanel2" runat="server">
        <ContentTemplate>
            <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>             
        </ContentTemplate>
    </asp:UpdatePanel>

</div>

CS:

protected void Page_Load(object sender, EventArgs e)
    {
        lblid.Text = DateTime.Now.ToString();
        Label1.Text = DateTime.Now.ToString();
        Label2.Text = DateTime.Now.ToString();
    }
于 2012-05-20T10:27:51.447 に答える