在ASP.NET的Arraylist中存储和检索值
我试图在按钮单击事件时将值存储在Arraylist中,并尝试在另一次按钮单击时检索它。但不知何故,Arraylist仍然是空的,我没有得到任何输出。请帮忙在ASP.NET的Arraylist中存储和检索值,asp.net,arraylist,Asp.net,Arraylist,我试图在按钮单击事件时将值存储在Arraylist中,并尝试在另一次按钮单击时检索它。但不知何故,Arraylist仍然是空的,我没有得到任何输出。请帮忙 ArrayList al = new ArrayList(); protected void btn1_Click(object sender, EventArgs e) { Class1 cl1 = new Class1(); cl1.name = txt1.Text; cl1.course = txt2
ArrayList al = new ArrayList();
protected void btn1_Click(object sender, EventArgs e)
{
Class1 cl1 = new Class1();
cl1.name = txt1.Text;
cl1.course = txt2.Text;
al.Add(cl1);
}
protected void btn2_Click(object sender, EventArgs e)
{
for (int i = 0; i < al.Count; i++)
{
Class1 cl = (Class1)al[i];
Response.Write(cl.name);
Response.Write(cl.course);
}
}
首先,你应该理解这篇文章,所以我强烈推荐这篇文章 通过了解asp.net web生命周期,您将了解web表单中的变量是无状态的,因此当您使用服务器控件进行回发时,在您的情况下,按钮会刷新变量,因此每次单击按钮后,您的ArrayList al将为空 解决方案: 要在ASP.NET中解决此问题,您可以在表单上使用或会话变量在页面上存储信息。但是,如果您有大量数据,例如包含数百条记录的集合,则将它们存储在这些变量上不是一个好的做法,因为这会导致应用程序性能降低,并占用服务器内存快点 因此,在您的示例中,可以使用数据库中的数组列表,也可以使用静态方法或viewstate,但不推荐使用
你应该交叉检查你的阵列,看看你是否在其他地方弄乱了它。先生,你解释得很清楚,没有任何修饰,你能告诉我解决这个问题的正确方法吗。我更喜欢来自数据库或静态方法的arraylist示例。请帮忙!!您需要一个数据库表来存储阵列的信息。例如,如果您只有name和course字段,那么您只需要在数据库中包含这两个字段的一个表,然后编写ADO.NET或Linq2Sql代码,将您的信息存储到btn1_Click事件的数据库中,并在btn2_Click上选择这些信息。这是一个非常好的选择简单明了的概念。实际上,我感到困惑的是,如果我将一个变量放在事件范围之外,它将成为全局变量,并且可以保存可以在任何地方访问的值,但是在阅读页面加载生命周期之后,我非常确定我的方向是错误的。我需要专注于国家管理。如果有关于国家管理的文章,请给我一些简单但全面的链接。
protected void btn1_Click(object sender, EventArgs e) {
ArrayList al = new ArrayList();
Class1 cl1 = new Class1();
cl1.name = txt1.Text;
cl1.course = txt2.Text;
al.Add(cl1);
ViewState["al"] = al;
}
protected void btn2_Click(object sender, EventArgs e) {
ArrayList al = ViewState["al"] as ArrayList;
for (int i = 0; i < al.Count; i++)
{
Class1 cl = (Class1)al[i];
Response.Write(cl.name);
Response.Write(cl.course);
}
}