0

UpdatePanel でユーザー コントロールを更新したいのですが、別のプロパティ値でも更新したいと考えています。

<asp:UpdatePanel runat=server ID=up1>
<Triggers>
            <asp:AsyncPostBackTrigger controlid="but01" eventname="Click" />
        </Triggers>
<ContentTemplate>
<asp:Button runat="server" Text="Test" ID="but01"  />   
<UC:Uc runat=server ID="Uc1" />
</ContentTemplate>
</asp:UpdatePanel>



Codebehind for but01 click is
void but01_Click(object sender, EventArgs e)
{

this.Uc1.ID = 1;
this.Uc1.Length = 50;
}

このコードをテストしたところ、ユーザー コントロールが更新されましたが、新しい値 ID=1、Length=50 は適用されません。

制御コードビハインドはかなり単純です

namespace Admin.Web.Controls
{

    public partial class Uc1 : System.Web.UI.UserControl
    {

        private string p_to;
        private string p_from;
        private string p_subject;
        private string p_body; 
        private string p_priority;
    }


        protected void Page_Load(object sender, EventArgs e)
        {

            this.txtFrom.Text = p_from;
            this.txtTo.Text = p_to;
            this.txtSubject.Text = p_subject;
            this.txtBody.Text = p_body;

        }

        public string Subject
        {
            get
            {
                return p_subject;
            }
            set
            {
                p_subject = value;
            }
        }

        public string From
        {
            get
            {
                return p_from;
            }
            set
            {
                p_from = value;
            }
        }

        public string To
        {
            get
            {
                return p_to;
            }
            set
            {
                p_to = value;
            }
        }

        public string Body
        {
            get
            {
                return p_body;
            }
            set
            {
                p_body = value;
            }
        }

}

ascxヘッダーは

<%@ Control Language="c#" Inherits="Admin.Web.Controls.Uc1" AutoEventWireup="true" Codebehind="Uc1.ascx.cs"  %> 

ページの読み込み中に aspx ページからユーザー コントロールを開始すると、すべて問題ありません。コントロール パネルからのポストバック時に、ユーザー コントロールが更新されます (ラベル + 時間でチェックされます) が、ユーザー コントロールに値が渡されません。

4

1 に答える 1

2

トリガータグを削除

http://msdn.microsoft.com/en-us/library/Bb399001(v=vs.100).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2

また

asp:Button を UpdatePanel の外に移動します。

http://msdn.microsoft.com/en-us/library/Bb399001(v=vs.100).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-5

アップデート:

コントロールのセッターとゲッターを次のようにしてください -

public string Subject
{
   get  { return txtSubject.Text; }
   set  { txtSubject.Text = value; }
}
于 2013-01-23T22:14:24.427 に答える