none
【ASP.NET】在位置0处没有任何行 RRS feed

  • 问题

  • 以前我记得写过这样的代码,当时没有什么问题。我的代码如下:

    for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
            {
                try
                {
                    if (ds.Tables[0].Rows[0][i].ToString() != "")
                    {

    问题就出在加粗字体处:运行程序提示:

    在位置 0 处没有任何行。

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.IndexOutOfRangeException: 在位置 0 处没有任何行。

     

    记得以前我写过是没有问题的,对比了之前写的代码都是一样的。列类型我ntext与nvarchar都试过了,还是不行。请高手赐教!谢谢了!


    煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com
    • 已移动 孟宪会Moderator 2011年10月7日 0:50 (发件人:.NET Framework 一般性问题讨论区)
    2011年10月5日 8:36

答案

全部回复

  • 因为您的ds.Tables[0]没有数据

    改成以下试试看

     

     

    if (ds.Tables[0].Rows.Count > 0)//有数据才往下做
    {
                for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
                {
    
    
                    if (ds.Tables[0].Rows[0][i].ToString() != "")
                    {
    
                    }
                }
    
    }
    

     


    Shadowと愉快なコード達

    2011年10月5日 16:28
  • 其实不是这样的,我表的设计如下:

    表中只有一行。再我用

    if (ds.Tables[0].Rows.Count > 0)的时候已经是有数据的。

    以上if (ds.Tables[0].Rows[0][i].ToString() != "")就相当于你说的意思。只不过我本表中只有一行。


    煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com
    2011年10月6日 1:34
  • 请尝试使用以下代码:

    foreach(DataRow row in DataTable.Rows)

    {

         foreach(DataColumn col in DataTable.Columns)

         {

                if (row[col]!=null && row[col].ToString().Trim()!="")
                 {

                        //做你要做的……

                 }

         }

    }


    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年10月6日 4:52
  • 或是先做Rows.Count的判斷。

    for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
    {
                try
                {
                    if (ds.Tables[0].Rows.Count > 0)
                    {
                       if (ds.Tables[0].Rows[0][i].ToString() != "")
                       {
                          //todo
                        }
                    }
                }
    }
    
      
    



    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年10月7日 1:11
  • 或是先做Rows.Count的判斷。

     

    for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
    {
                try
                {
                    if (ds.Tables[0].Rows.Count > 0)
                    {
                       if (ds.Tables[0].Rows[0][i].ToString() != "")
                       {
                          //todo
                        }
                    }
                }
    }
    
      
    


     


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    我做的解决方法是使用try捕获,然后利用catch抛出异常解决了.感谢大家的帮助

    煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com
    2011年10月13日 2:43