当前位置:编程学习 > C#/ASP.NET >>

ds.Tables["list"].Rows[i]["id"].ToString(); i值错误。

            SearchRows = ds.Tables["zplist"].Rows.Count;
            for (i = 0; i <= SearchRows; i++)
            {
                cID = ds.Tables["list"].Rows[i]["id"].ToString();
                cBgndate = ((DateTime)ds.Tables["list"].Rows[i]["dBgndate"]).ToString("yyyy-mm-dd");
                cEnddate = ((DateTime)ds.Tables["list"].Rows[i]["dEnddate"]).ToString("yyyy-mm-dd");
                
                cDropDownListString = cID + " | " + cBgndate + " | " + cEnddate;
                ddl_list.Items.Add(cDropDownListString);
            }

如上述代码,如果SearchRows有 5 行.直接在Rows[]这里填上i,系统会报错。请问此种问题应该怎么处理,多谢。 --------------------编程问答-------------------- 估计报错是:超出数组上限。

在计算机语言中,大部分都是这么计数的0,1,2,3。也就是说第4个数是3. --------------------编程问答-------------------- 小弟疏乎了,多谢了.万分感谢. --------------------编程问答-------------------- i  <= SearchRows   

把 = 去掉 --------------------编程问答-------------------- SearchRows 是 个数,但数据下标是从0开始,如果有5个,Rows[5]的时候就越界了 --------------------编程问答-------------------- 学习了
跟数组一个道理 --------------------编程问答-------------------- 试试下面写法:

foreach (DataRow dr in ds.Tables["zplist"].Rows)
        {
            cID = dr["id"].ToString();
            cBgndate = string.Format("{0:yyyy-MM-dd}", dr["dBgndate"].ToString());
            cEnddate = string.Format("{0:yyyy-MM-dd}", dr["dEnddate"].ToString());
        }


--------------------编程问答-------------------- 楼上的几乎都讲到答案了 --------------------编程问答-------------------- 用foreach会比较好点
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,