0

Microsoft のこの公式サンプルを使用します。

クリック イベントで分離コードから MyLabel にアクセスしようとすると、MyLabel は NULL です。

なぜこれ?

<asp:ScriptManager ID="PageScriptManager" runat="server" />
<asp:Button ID="MyButton" Text="Click Me" runat="server" onClick="MyButton_Clicked" />
<asp:UpdatePanel ID="MyUpdatePanel" runat="server">
<Triggers> 
    <asp:AsyncPostBackTrigger ControlID="MyButton" EventName="Click" />
</Triggers>
    <ContentTemplate>
    <asp:Label ID="MyLabel" Text="OldText" runat="server" />
    </ContentTemplate>
</asp:UpdatePanel>




private void MyButton_Clicked(object sender, EventArgs e) 
 {   
  MyLabel.Text = "NewText!";
 } 

更新このコードは機能しません なぜですか? MyLabel はサーバー側で常に NULL です ??

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeFile="Default.aspx.cs" Inherits="_Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">

  <asp:ScriptManager runat="server" ID="xx">  
  </asp:ScriptManager>

 <asp:ImageButton OnClick="OnClickRefreshButton" ID="RefreshImageButton" runat="server" Width="100px" />
<asp:UpdatePanel ID="MyUpdatePanel" runat="server"> 
    <Triggers>
         <asp:AsyncPostBackTrigger ControlID="RefreshImageButton" EventName="Click" /> 
    </Triggers> 
    <asp:ContentTemplate> 
      <asp:Label ID="MyLabel" Text="OldText" runat="server" />
    </asp:ContentTemplate>
</asp:UpdatePanel>  
</asp:Content>

protected void OnClickRefreshButton(Object sender, ImageClickEventArgs e) 
        {       

            MyLabel.Text = "NewText!";
        }
4

2 に答える 2

1

関数をprotectedではなくに変更してみてprivateください。うまくいきました。それがあなたの問題を解決したことを願っています

于 2012-10-02T17:02:30.023 に答える
0

あなたに合わせて調整でき UpdateMode="Conditional"ますUpdatepanel

リンク: http://msdn.microsoft.com/fr-fr/library/system.web.ui.updatepanel.updatemode.aspx

于 2012-10-02T13:14:47.970 に答える