将值添加到全局列表
本文关键字:全局 列表 添加 | 更新日期: 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>();
}
其他明智的你可以使用视图状态