まず、以前のデータをページに保持する方法に焦点を当てる必要があります。
投稿から投稿へ、あなたはそれらをエーテル上ViewState
のエーテルに保存することができますcontrol
。
私が見るように、に前の状態を保存することがあります、それbtn.Text
はそれほどクールではありませんが、大丈夫です。
protected void btnEnter_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
// the btn.Text keeps the number of post backs (enters of name).
var Counter = Int32.Parse(btn.Text);
Counter++;
if(Counter >= 5)
{
Label1.Text = "No more studen's names please";
}
else
{
btn.Text = Counter.ToString();
Label1.Text = "Enter Another student's name";
}
}
ご覧のとおり、これを使用してカウンターを「保存」し、btn.Text
多くの投稿が行われたことを確認します。
そのような方法で、入力した名前を保存できます。私はそれをviewstateに保存することを好み、このコードでそれを行うことができます。
const string cArrNameConst = "cArr_cnst";
public string[] cArrKeepNames
{
get
{
if (!(ViewState[cArrNameConst] is string[]))
{
// need to fix the memory and added to viewstate
ViewState[cArrNameConst] = new string[5];
}
return (string[])ViewState[cArrNameConst];
}
}
そのコードを使用すると、コードに0-> 4の任意の名前を追加しcArrKeepNames[]
て、ポストバックの後に名前を付けることができます。これは、ページのビューステートに保持されるためです。
protected void btnEnter_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
var Counter = Int32.Parse(btn.Text);
// here you save the name in the array
// an magically is saved inside the page on viewstates data
// and you can have it anywhere on code behind.
cArrKeepNames[Counter] = NameFromEditor.Text;
Counter++;
if(Counter >= 5)
{
btn.Enable = false;
Label1.Text = "No more studen's names please";
}
else
{
btn.Text = Counter.ToString();
Label1.Text = "Enter Another student's name";
}
}
そのような単純なコードは、いつでも配列を読み取ることができます。
foreach (var One in cArrKeepNames)
txtOutput.Text += "<br>" + One;
私はそれをテストし、うまく機能しています。