将值添加到全局列表

本文关键字:全局 列表 添加 | 更新日期: 2023-09-27 17:55:50

>我有以下全局列表 -

 public partial class About : System.Web.UI.Page
 {
    List<string> changes = null;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            List<string> changes = new List<string>();
        }

我正在尝试像这样向changes添加字符串值 -

 protected void CheckBox1_CheckedChanged(Object sender, EventArgs e)
    {
        CheckBox chk = (CheckBox)sender;
        DataListItem item = (DataListItem)chk.NamingContainer;
        TextBox txt = (TextBox)DataList1.Items[item.ItemIndex].FindControl("aliasTextBox");
        string text = txt.Text;

        changes.Add(text);
        ViewState["array"] = changes;
    }

所以我试图将 dataList 中所做的所有更改存储到 changes 中,以便当用户单击 -

protected void Button5_Click(object sender, EventArgs e)
    {
        List<string> changes = (List<string>)ViewState["array"];
        foreach (string text in changes)
        {
            WebService1 ws = new WebService1();
            ws.WebMethod(text);
        }
    }

但是,在单击按钮时,我在 - changes.add(text) 部分上得到一个空引用异常。如何将所有值存储在更改中,以便在单击按钮时可用?

将值添加到全局列表

对变量所做的更改在回发后不会保留。应将此列表"更改"的值保存到视图状态、会话或应用程序,以便即使在回发后也可以保留列表的值。

更新列表后在 CheckBox1_CheckedChanged 事件中添加此代码

ViewState["Somename"]=changes;

在访问列表之前在Button5_Click中添加此代码

changes= (List<string> )ViewState["Somename"]

使用 IsPostBack

并将List<string> changes = new List<string>();更改为List<string> changes = null;

将此代码添加到构造函数

if(!IsPostBack)
{
 changes = new List<string>();
}

其他明智的你可以使用视图状态