public int ModAdd(string[] key, string txtDate,string ids)
        {
            Dictionary<string, string> dickey = new Dictionary<string, string>();
            List<Referkey> likey = new List<Referkey>();
            int j = 2;
            Cal li = new Cal();
            int id = Convert.ToInt32(Session["adm_ID"]);
            for (int i = 0; i < key.Length; i++)
            {
                //后台接收到的数组形式
                // currentTime = [\"currentTime\",\"20:30\"]
                //分解数组
                string keystr = key[i].Replace("\",\"", "^");
                string keystr1 = keystr.Replace("[\"", "");
                string keystr2 = keystr1.Replace("\"]", "");
                string[] keys = keystr2.Split('^');
                dickey.Add(keys[0], keys[1]);
                if ((i + 1) % 7 == 0)
                {
                    Referkey r = new Referkey();
                    r.Cutime = dickey["currentTime" + j];
                    r.Customername = dickey["customerName" + j];
                    r.Customertel = dickey["customerTel" + j];
                    r.Plancontent = dickey["plancontent" + j];
                    r.Progress = dickey["progress" + j];
                    r.Visit = dickey["visit" + j];
                    r.Visitagain = dickey["visitAgain" + j];
                    likey.Add(r);
                    j = j + 1;
                }
            }            return li.ModAddTbl(likey, txtDate, id, Convert.ToInt32(ids));        }
运行这一段的时候出错了,说是索引超出了数组界限。各位帮忙看看!!

解决方案 »

  1.   

    dickey   你断点看看
      

  2.   

    呵呵!!发错代码了!  public int listteam(string[] array,string shopno)
            {
                Dictionary<string, string> likey= new Dictionary<string,string>();
                List<ReKey> dis=new List<ReKey>();
                int j = 2;
                B ad = new B();
               
                for (int i = 0; i < array.Length; i++) {
                   
                    //后台接收到的数组形式
                    // Team = [\"Team\",\"书香店\"]
                    //分解数组
                    string keystr = array[i].Replace("\",\"", "");
                    string keystr1 = keystr.Replace("[\"", "");
                    string keystr2 = keystr1.Replace("\"]", "");
                    string[] keys = keystr2.Split('^');
                    likey.Add(keys[0], keys[1]);
                    if ((i + 1) % 3 == 0) {
                        ReKey r = new ReKey();
                        r.Team = likey["team" + j];
                        r.Re = likey["re" + j];
                        r.HidDeptNo = likey["hiddeptno" + j];
                        dis.Add(r);
                        j = j + 1;
                    }
                }
                return ad.Refer(dis, shopno);
               
            }是这和段出错了。运行这一段的时候出错了,说是索引超出了数组界限。各位帮忙看看!!
      

  3.   

    懒就加个try 看错误
    最好用断点
      

  4.   


    有段点了,就是在 likey.Add(keys[0], keys[1]);这么一句的地方出错了
      

  5.   

    你调式的时候看下keys里面到底有几个值,   估计就是你的keys[0]里面是"" 根本就没有keys[1]
      

  6.   

    那肯定就是这句string[] keys = keystr2.Split('^');
    split的时候得到的keys数组只有一个了呗,还能是啥原因。
      

  7.   

    有值  是"Dept1英皇店",是有值的
      

  8.   

    dickey.Add(keys[0], keys[1]);看你的keys的count为多少。
      

  9.   


    像8楼说的你的keys.count估计是等于1
      

  10.   


    keys是string[1],dicdey.count是等于0
      

  11.   

    keys是string[1] 这个是什么?
      

  12.   


    这说明最大只能使用keys[0]来访问。
      

  13.   

    keys里面必须有2个或2个以上的值,   就是keys.count >=2数组才不会超出界限!
      

  14.   

    那就对了,  所以说他根本就没有keys[1]嘛,  当然超出界限。
      

  15.   

    知道我错在哪里了!是我少在 string keystr = array[i].Replace("\",\"", "");
    里加^,现在可以了,谢谢各位!!
      

  16.   

    string[] keys = keystr2.Split('^');
    likey.Add(keys[0], keys[1]);在截取keystr2的时候,要不没截取到, 要不就只截取到一个!所以你要解决的话,   就在调试的时候看下 
    keystr  keystr1   keystr2   keys 这几个的值,一步一步来!看各个步骤获取的值是不是你预期估计的值。