これは基本的な問題のようですが、私は困惑しています。.ascx内のコントロールはポストバックに新しい値を表示していません
page_loadにカスタムコントロール(.ascx)を読み込むメインページがあります。
このカスタムコントロールには2つのフィールドがあります。そのうちの1つはドロップダウンリストで、もう1つはテキストボックスです。ドロップダウンリストが値を変更すると、ポストバックがトリガーされ、いくつかのロジックがサーバー側で実行され、テキストボックスの値が生成されます。コードを踏んで、値が正しく作成され、割り当てられました。ただし、ページがレンダリングされるとき、値は変更されません。
テキストボックスの値を "QQQ"に変更してポストバックをトリガーすると、 "QQQ"がテキストボックスに残り、viewstateが動作していることを確認できます。
ポストバック時に生成された値がフォームに表示されない理由はありますか。このプロセスは最初のページの読み込みで正常に動作します。
.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
string ascxPath = @"~/_CONTROLTEMPLATES/TRC_BITS.ascx";
TRC_BITS control = Page.LoadControl(ascxPath) as TRC_BITS;
phForm.Controls.Add(control);
}
た.ascx
<asp:TextBox ID="message" runat="server" TextMode="MultiLine" /><br/>
<asp:DropDownList ID="year" runat="server" AutoPostBack="true">
<asp:ListItem Text="2011">2011</asp:ListItem>
<asp:ListItem Text="2012">2012</asp:ListItem>
<asp:ListItem Text="2013">2013</asp:ListItem>
</asp:DropDownList>
.ascx.cs
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
year.SelectedValue = DateTime.Now.Year.ToString();
}
if (year.SelectedValue == 2012)
message.Text = "ABC";
else
message.Text = "XYZ";
}
これは完全な答えではありません。実装によっては、動作しても動作しなくてもかまいません。 –
ありがとうhabibi。それがそれでした。 – RWL01