ユーザーコントロールuc1にテキストボックスがあります。この uc1 を default.aspx というページに埋め込みました。私の問題は、アプリケーションを実行してテキストボックスにデータを入力した後、ページを更新するときに、テキストボックスに入力した値を表示し、テキストボックスをクリアしたくないことです。これを達成する方法についてのコードを教えてください。よろしくお願いします。
3 に答える
テキストボックスの値をクリアせずにページを更新できました。私は以下のようにそれを行いました: 私は以下のように UC1.vb でパブリック プロパティを作成しました: パブリック プロパティ textbox_value() As String
Get
If Session("textbox1") IsNot Nothing Then
Return Session("textbox1").ToString()
Else
Return ""
End If
End Get
Set(value As String)
Session("textbox1") = value
End Set
End Property
そして、ユーザー コントロールの page_load イベントに以下のコードを追加しました: If IsPostBack Then textbox_value= textbox1.Text ElseIf Not IsPostBack Then ' ページが最初に読み込まれたとき、またはページが更新されたとき
それが役に立てば幸い。
aspx.cs ページの上部にグローバル変数を作成します。
public string textboxValue
{
get
{
if (ViewState["textboxValue"] != null)
return ViewState["textboxValue"].toString();
else
return "";
}
set
{
ViewState["textboxValue"] = value;
}
}
次に、PageLoad() で、textboxValue に値を割り当てます。
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
textboxValue = MyTextBox.Value;
else
MyTextBox.Value = textboxValue;
}
また、いつでも textboxValue を使用して MyTextBox の値を割り当てたり、便利な他の方法で使用したりすることもできます。
すべての asp.net サーバー側コントロール ( runat="server"
) の既定の動作は、その状態を維持することです。ページが更新されたときにテキストボックスがクリアされている場合は、コードでその値を自分でクリアしている可能性があります。
テキスト ボックスまたはユーザー コントロールを動的に追加していますか? もしそうなら、あなたはそれをしていPageInit
ますか?後で追加すると、状態が失われる可能性があります。