1

私はこのテーマにまったく慣れておらず、非常に迷っています。Webサイトにテキストボックスがあります。textBoxに入力されたデータは配列に配置されカウンターが増加します。カウンターが5に達すると、配列にそれ以上追加することはできません

配列に入力されたすべての名前を表示するボタンがあり、配列とカウンターもクリアされます。

C#でクラスとメソッドを並べ替える方法がわかりません。ボタンをメインクラス内に配置して、ボタン間で変数を共有できるようにしましたが、テキストボックスにアクセスできません。

私がこれを理解しようとしているので、いくつかのコードがありますが、それはここに属していない可能性があります。私はそれをすべて理解しようとしているだけなので、コードもかなり裸です。どんな助けでも大歓迎です。

<script runat="server"> 

public partial class Arrays
{
  private int Counter = 0;    

  protected void btnEnter_Click(object sender, EventArgs e)
  {
    Button btn = (Button)sender;
    btn.Text = (Int32.Parse(btn.Text) + 1).ToString();
    Label1.Text = "Enter Another student's name";
  }

  public void btnEnter_Click2(object sender, EventArgs e)
  {
     Label1.Text = "Enter a student's name ";        
  }
}

</script>
4

1 に答える 1

0

まず、以前のデータをページに保持する方法に焦点を当てる必要があります。

投稿から投稿へ、あなたはそれらをエーテル上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;

私はそれをテストし、うまく機能しています。

于 2012-09-09T20:05:23.360 に答える