private void _sum()
          {
            double sum = 0;
              for (int i = 0; i <= gv_mxz.Rows.Count-1; i++)
            {
                  string dj = gv_mxz.DataKeys[i].Values[0].ToString();
             double  number1=Convert.ToDouble(((TextBox)(gv_mxz.Rows[i].Cells[4].Controls[0])).Text.ToString());
             double number2 = Convert.ToDouble(((TextBox)(gv_mxz.Rows[i].Cells[5].Controls[0])).Text.ToString());
                  sum=sum+number1-number2;
                  gv_mxz.Rows[i].Cells[6].Text = Convert.ToString(sum);
            }
        }总是提示标题的错误,不知道为什么啊?哪位大神帮帮小弟啊,给gridview 第6个单元格赋值。PS:gridview 表中第6列本来是一列空值。

解决方案 »

  1.   

    那就断点看看,肯定是类似这样Cells[4]的索引,不知道哪里超出了界限
      

  2.   

            private void MxzDataBind()
            {
                string date = drp_year.SelectedItem.Text + drp_month.SelectedItem.Text;
                string ck = drp_ck.SelectedItem.Text;
                string strsql = string.Format("Select b.单据日期,b.单据号,b.部门名称,b.业务类别,Convert(float,b.借方数量) as 借方数量,Convert(float,b.贷方数量) as 贷方数量,b.库存余额,b.物料名称,b.规格型号,b.单位 ,b.仓库名称 from");
                strsql += string.Format("((Select t1.[KCCKD1_DJRQ]as 单据日期,t1.[KCCKD1_SJDH] as 单据号,t3.[KCBMZD_BMMC] as 部门名称,t7.[KCYWLB_LBMC] as 业务类别,t1.[KCCKD1_DWGC] as 借方数量,t2.[KCCKD2_SL] as 贷方数量,t1.[KCCKD1_C5] as 库存余额,t4.[LSWLZD_WLMC] as 物料名称,t4.[LSWLZD_GGXH] as 规格型号,t5.[JSJLDW_DWMC] as 单位 ,t6.[LSCKZD_CKMC] as 仓库名称 from");
                strsql += string.Format("(SELECT [KCCKD1_LSBH] ,[KCCKD1_DJRQ],[KCCKD1_SJDH] ,[KCCKD1_LBBH],[KCCKD1_CKBH],[KCCKD1_BMBH],[KCCKD1_DWGC],[KCCKD1_C5] FROM [lc0019999].[KCCKD1]) as t1,");
                strsql += string.Format("(SELECT [KCCKD2_LSBH] ,[KCCKD2_FLBH],[KCCKD2_WLBH],[KCCKD2_SL] FROM [lc0019999].[KCCKD2]) as t2,");
                strsql += string.Format("(SELECT [KCBMZD_BMBH] ,[KCBMZD_BMMC] FROM [lc0019999].[KCBMZD])as t3,");
                strsql += string.Format("(SELECT [LSWLZD_WLBH],[LSWLZD_WLMC],[LSWLZD_GGXH],[LSWLZD_JLDW] FROM [lc0019999].[LSWLZD])as t4,");
                strsql += string.Format("(SELECT [JSJLDW_DWDM],[JSJLDW_DWMC] FROM [lc0019999].[JSJLDW])as t5,");
                strsql += string.Format("(SELECT [LSCKZD_CKBH],[LSCKZD_CKMC] FROM [lc0019999].[LSCKZD]) as t6,");
                strsql += string.Format("(SELECT [KCYWLB_LBBH],[KCYWLB_LBMC]  FROM [lc0019999].[KCYWLB])as t7 ");
                strsql += string.Format("  where t1.[KCCKD1_LSBH]=t2.[KCCKD2_LSBH] and t1.[KCCKD1_LBBH]=t7.[KCYWLB_LBBH] and t1.[KCCKD1_CKBH]=t6.[LSCKZD_CKBH] and t1.[KCCKD1_BMBH]=t3.[KCBMZD_BMBH]");
                strsql += string.Format(" and t2.[KCCKD2_WLBH]=t4.[LSWLZD_WLBH]  and t4.[LSWLZD_JLDW]=t5.[JSJLDW_DWDM] and t1.[KCCKD1_DJRQ] between '20110300' and '20110331' and  t6.[LSCKZD_CKMC]='翠矿煤专' and  t2.[KCCKD2_WLBH]='03050032') ");
                strsql += string.Format("union all");
                strsql += string.Format("(select a2.[KCRKD1_DJRQ] as 单据日期,a2.[KCRKD1_SJDH] as 单据号,a5.[KCBMZD_BMMC] as 部门名称,a4.[KCYWLB_LBMC] as 业务类别,a1.[KCRKD2_SSSL] as 借方数量,a2.[KCRKD1_DWGC] as 贷方数量,a2.[KCRKD1_C5] as 库存余额,a7.[LSWLZD_WLMC] as 物料名称,a7.[LSWLZD_GGXH]as 规格型号,a6.[JSJLDW_DWMC] as单位,a3.[LSCKZD_CKMC] as 仓库名称 from");
                strsql += string.Format("(SELECT [KCRKD2_LSBH],[KCRKD2_FLBH],[KCRKD2_WLBH],[KCRKD2_SSSL] FROM [lc0019999].[KCRKD2]) as a1,");
                strsql += string.Format("(SELECT [KCRKD1_LSBH],[KCRKD1_DJRQ],[KCRKD1_SJDH],[KCRKD1_LBBH],[KCRKD1_CKBH],[KCRKD1_DWBH],[KCRKD1_BMBH],[KCRKD1_DWGC],[KCRKD1_C5] FROM [lc0019999].[KCRKD1]) as a2,");
                strsql += string.Format("(SELECT [LSCKZD_CKBH] ,[LSCKZD_CKMC] FROM [lc0019999].[LSCKZD]) as a3,");
                strsql += string.Format("(SELECT [KCYWLB_LBBH] ,[KCYWLB_LBMC] FROM [lc0019999].[KCYWLB]) as a4,");
                strsql += string.Format("(SELECT [KCBMZD_BMBH] ,[KCBMZD_BMMC] FROM [lc0019999].[KCBMZD]) as a5,");
                strsql += string.Format("(SELECT [JSJLDW_DWDM],[JSJLDW_DWMC] FROM [lc0019999].[JSJLDW])  as a6,");
                strsql += string.Format("(SELECT [LSWLZD_WLBH],[LSWLZD_WLMC],[LSWLZD_GGXH],[LSWLZD_JLDW] FROM [lc0019999].[LSWLZD]) as a7");
                strsql += string.Format(" where a1.[KCRKD2_LSBH]=a2.[KCRKD1_LSBH] and a1.[KCRKD2_WLBH]=a7.[LSWLZD_WLBH] ");
                strsql += string.Format("and a2.[KCRKD1_LBBH]=a4.[KCYWLB_LBBH]  and a2.[KCRKD1_CKBH]=a3.[LSCKZD_CKBH] ");
                strsql += string.Format("and a2.[KCRKD1_BMBH]=a5.[KCBMZD_BMBH] and a6.[JSJLDW_DWDM]=a7.[LSWLZD_JLDW]");
                strsql += string.Format("and a2.[KCRKD1_DJRQ] between '20110300' and '20110331'  ");
                strsql += string.Format("and  a3.[LSCKZD_CKMC]='翠矿煤专'");
                strsql += string.Format("and  a1.[KCRKD2_WLBH]='03050032')) as b order by b.单据日期");
                gv_mxz.DataSource = data.GetDataTable(strsql, data.GetconnectionMt());
                gv_mxz.DataBind();
            }
           
               private void _sum()
              {
                double sum = 0;
                  for (int i = 0; i <= gv_mxz.Rows.Count-1; i++)
                  {
                      string dj = gv_mxz.DataKeys[i].Values[0].ToString();
                      double number1=Convert.ToDouble(((TextBox)(gv_mxz.Rows[i].Cells[4].Controls[0])).Text.ToString());
                      double number2 = Convert.ToDouble(((TextBox)(gv_mxz.Rows[i].Cells[5].Controls[0])).Text.ToString());
                      sum=sum+number1-number2;
                      gv_mxz.Rows[i].Cells[6].Text = Convert.ToString(sum);
                  }
            }
    在Grivdview表中,增加了一列空值,用来填充值sum,可以确定,索引没错误。求助。
      

  3.   

    问题已解决,除掉Textbox和controls,谢谢各位热心的朋友。