从DataList控件中取label的值,老是提示索引超出范围。
调试时,i=0时就出错,请高手指教。ArrayList myarr = new ArrayList();
ArrayList mysrc = new ArrayList();for (int i = 0;i<10 ; i++)
            {
                Label testid = (Label)DataList1.Items[i].FindControl("testidLabel");
                myarr.Add(testid.Text);
                Label ans = (Label)DataList1.Items[i].FindControl("ansLabel");
                mysrc.Add(ans.Text);
            }

解决方案 »

  1.   

    i<10  换成   i<DataList1.Items.count 尝试一下
    我是小菜鸟!   说的不好清见谅,   希望能够帮到你!
      

  2.   

    Label testid = (Label)DataList1.Items[i].FindControl("testidLabel"); 
    ==
    Label testid = (Label)(DataList1.Items[i].FindControl("testidLabel")); 
      

  3.   

    DataList1有几个的Item?for (int i = 0;i <DataList1.Items.Count ; i++) 
                { 
                    Label testid = (Label)DataList1.Items[i].FindControl("testidLabel"); 
                    myarr.Add(testid.Text); 
                    Label ans = (Label)DataList1.Items[i].FindControl("ansLabel"); 
                    mysrc.Add(ans.Text); 
                }
      

  4.   

    那你DataList1.Items[0]里面有没有Label 自己查查
      

  5.   

    谢谢1楼的,按照你的改了就不报错了。
    可是,后面又说超出索引范围了,能否也帮看下呢?谢谢!~for (int i = 0; i < DataList1.Items.Count; i++)
                {
                    //获取考生答案
                    RadioButtonList rbn = (RadioButtonList)(DataList1.Controls[i].FindControl("rblans"));
                    //添加到数组
                    myans.Add(rbn.SelectedValue);
                    //与正确答案对比,并得分
                    if (mylist[i].ToString() == myans[i].ToString())
                    {
                        point += 10;
                    }
                }i加到9的时候 if (mylist[i].ToString() == myans[i].ToString())这句提示超出范围的错误。
      

  6.   

    [Quote=引用 3 楼 ojekleen 的回复:]
    DataList1有几个的? ??难道只能有一个?那我要取两个Label的值怎么办啊?
      

  7.   

    DataList1.Items里面没有Label而且Count也是0。怎么回事啊?!~
      

  8.   

    哥们,断点调试,快速监视DataList1级联项的值
      

  9.   

    建议这样:
    先去弄明白,datalist到底从1还是0开始取值,弄点值进去,打出来看看究竟。第二:看看你的结尾是不是弄错了。