共享变量并将文本框数据放入数组中

时间:2012-09-09 19:34:34

标签: c# asp.net

我是这个主题的新手,非常迷失。我的网站上有一个文本框。输入textBox 的数据将放置在数组中,计数器将增加。一旦计数器达到五个就无法向阵列添加更多

将会有一个按钮显示输入到数组中的所有名称,这也会清除数组和计数器。

我不知道如何在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>

1 个答案:

答案 0 :(得分: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-&gt; 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;

我测试它并且运行良好。