我有一个数组,我不想填充文本框,比如javascript .push()方法。
到目前为止,这是我的代码:
namespace Assigment9
{
public partial class Default : System.Web.UI.Page
{
double[] numbers = new double[5];
protected void Page_Load(object sender, EventArgs e)
{
}
protected void addButton_Click(object sender, EventArgs e)
{
double number = Convert.ToDouble(numberTB.Text);
}
}
答案 0 :(得分:1)
您需要将数字添加到您声明的数字数组
double[] numbers = new double[5];
现在你只是在addButton_Click中声明一个名为number的新变量而不用它做任何事情。
使用数字列表可能更容易。即
List<double> numbers = new List<double>();
然后在addButton_Click中添加数字
numbers.Add(mynumber);
你已经在类中声明了一个长度为5的数组,这意味着你需要声明一个索引变量并进行边界检查以确保在addButton单击后数组不满。 I.E一旦用户点击按钮超过5次。使用该列表可以避免这种努力。
如果用户在文本框中键入非数字值,则addButton_Click处理程序中也会出现异常。您还应该将其更改为double.TryParse。
public partial class Default : System.Web.UI.Page
{
public List<double> numbers
{
get
{
var list = ViewState["mylist"];
if (list == null) ViewState["mylist"] = new List<double>();
return ViewState["mylist"] as List<double>;
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void addButton_Click(object sender, EventArgs e)
{
string value;
double number;
value = numberTB.Text;
if (Double.TryParse(value, out number)) numbers.Add(number);
// you should display some sort of message if the value isnt a number...
}
}
由于这是asp.net Web表单,您还需要在ViewState或Session中粘贴成员变量,否则列表或数组/任何内容将始终为空,因为Web表单不会自动为您保留成员变量值。
答案 1 :(得分:0)
我会这样:
public partial class Default : System.Web.UI.Page
{
Collection<double> numbers = new Collection<double>();
protected void Page_Load(object sender, EventArgs e)
{
}
protected void addButton_Click(object sender, EventArgs e)
{
try
{
double number = Convert.ToDouble(numberTB.Text);
numbers.Add(number);
}
catch (FormatException) {
Console.WriteLine("Unable to convert '{0}' to a Double.", number);
}
catch (OverflowException) {
Console.WriteLine("'{0}' is outside the range of a Double.", number);
}
}
}
答案 2 :(得分:0)
我知道有很多方法可以获得相同的输出。它也是其中之一。
根据您的评论
我知道,但我希望能够为数字[0]添加内容,第二次点击按钮时应该为数字添加数字[1]等
以下是解决方案
namespace Assigment9
{
public partial class Default : System.Web.UI.Page
{
double[] numbers = new double[5];
int counter=0; // declare a global variable which will count the number of button clicks
protected void Page_Load(object sender, EventArgs e)
{
}
protected void addButton_Click(object sender, EventArgs e)
{
if(counter <5)
{
numbers[counter] = Convert.ToDouble(numberTB.Text);
counter ++;
}
}
}
答案 3 :(得分:0)
为什么要使用C#从服务器端TextBox组件加载List。我建议使用Javascript。
但是,如果您明确想要使用TextBox从c#代码加载列表,则应该使用Session作为实例,因为当您单击按钮时页面正在回发,因此初始化列表将被重置。
这是结果代码:
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
List<double> numbers = new List<double>();
Session["numbers"] = numbers;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
if (Session["numbers"] != null)
{
List<double> numbersResult = Session["numbers"] as List<double>;
double number = Convert.ToDouble(TextBox1.Text);
numbersResult.Add(number);
Session["numbers"] = numbersResult;
}
}