在我的项目中,我有一个变量 numtorust 代表旅游的数量。(用于测试目的 numtourist = 2)
for (i=0,numtoursut; i++)
我为每个游客动态创建了 5 个复选框,并分配了 checkChanged 事件。另外为了跟踪哪个复选框适用于哪个游客,我添加了属性“收藏”
mycheckbox.InputAttributes.Add("collection", i.ToString());
在 checkedchanged 事件处理程序中 - 当用户选择一个复选框时,我检查其集合属性是 = 0 还是 1(第一个或第二个用户)。然后我添加复选框值,如果集合属性 = 1 myche1
,则其类型为。List<string)
但是当我决定使用名称 创建一个类型数组时,
当我尝试向其中添加一个元素时,我遇到了一个异常 - 对象引用未设置为我的代码的这一行中的对象实例List<string>
Toursit
Toursist[Int32.Parse(chk.InputAttributes["collection"])].Add(chk.InputAttributes["value"].ToString());
这是我的完整代码
protected void checkChanged(object sender, EventArgs e)
{
CheckBox chk = (CheckBox)sender;
/*that doesn't work
if (chk.Checked)
{
Toursist[Int32.Parse(chk.InputAttributes["collection"])].Add(chk.InputAttributes["value"].ToString());
((List<String>[])Session["chk"])[Int32.Parse(chk.InputAttributes["collection"])] = Toursist[Int32.Parse(chk.InputAttributes["collection"])];
}*/
//this works with myche1 of type list<string>
if ((chk.Checked)&&(chk.InputAttributes["collection"].Equals("1")))
{
myche1.Add(chk.InputAttributes["value"].ToString());
lblProba.Text += chk.InputAttributes["value"].ToString();
Session["chk1"] = myche1;
}
}
编辑1:
新代码
protected void checkChanged(object sender, EventArgs e) {
List<string>[] Toursist = new List<string>[2];
//Session["chk"] = new List<string>[2];
for (int i = 0; i < Toursist.Length; i++)
{
Toursist[i] = new List<string>();
// ((List<String>[])Session["chk"])[i] = Toursist[i];
}
CheckBox chk = (CheckBox)sender;
if (chk.Checked)
{
if (((List<String>[])Session["chk"])[Int32.Parse(chk.InputAttributes["collection"])] == null)
{
((List<String>[])Session["chk"])[Int32.Parse(chk.InputAttributes["collection"])] = Toursist[Int32.Parse(chk.InputAttributes["collection"])];
}
Toursist[Int32.Parse(chk.InputAttributes["collection"])].Add(chk.InputAttributes["value"].ToString());
lblProba.Text += chk.InputAttributes["collection"].ToString();
((List<String>[])Session["chk"])[Int32.Parse(chk.InputAttributes["collection"])] = Toursist[Int32.Parse(chk.InputAttributes["collection"])];
}
这次当我测试 Sessio["chk"] == 0 时再次出现同样的错误。
但如果我取消注释(所以我不再有这个错误)
// ((List<String>[])Session["chk"])[i] = Toursist[i];
在每个回发事件中,我的会话都是空的,我不想要!!