级别: 重要且紧急
 代码:  来源于网络
 protected void Page_Init(object sender, EventArgs e)
  {
            Control ts = CrystalReportViewer1.Controls[2];
            if (ts.ToString().Contains("ViewerToolbar"))
            {
                ImageButton BtnExport = new ImageButton();
                BtnExport.ID = "BtnExport";
                BtnExport.ImageUrl = "ntimage.gif";
                BtnExport.ToolTip = "Export to ...";
                BtnExport.Click += new ImageClickEventHandler(BtnExport_Click);
                BtnExport.Visible = true;
                ts.Controls.Add(BtnExport);            }
  }  目的: 在ASP.NET 中的水晶报表中  添加  自定义按钮!
 
  结果: 程序报如题所示错误,已寻求N个人帮忙,结果仍未解决此问题!
    

解决方案 »

  1.   

    CrystalReportViewer1.Controls[2]不存在吧
    你打印出 CrystalReportViewer1.Controls.Count看有几个啊
      

  2.   

    索引查过范围:  Control ts = CrystalReportViewer1.Controls[2];  //Controls[2]的话就是第三个,如果是第二个的话,就是Controls[1],索引是从0开始的。
      

  3.   

    Controls[0]=CrystalDecisions.Reporting.WebControls.DatabaseLogOnList
    Controls[1]=CrystalDecisions.Reporting.WebControls.ParameterList
    Controls[2]=CrystalDecisions.Web.ViewerToolbar
    Controls[3]=CrystalDecisions.Web.CrystalReportGroupTree
    Controls[4]=CrystalDecisions.Web.CrystalReportPageViewer我建议大家试一下,不要光看这代码! 
      如果注掉 ts.Controls.Add(BtnExport)    程序不报错!
      

  4.   

    调试CrystalReportViewer1.Controls有几个。
      

  5.   

    有可能是你的这个button在加载的时候,超过toolbar的长度引起的,你把按钮的宽度设成很小试试看。
      

  6.   

      Control ts = CrystalReportViewer1.Controls[2];
    应该是你这行有问题的
      

  7.   

    问题是问题根本不上之前所说的! 而且我在贴子已经将 CONTROL 数组所对的名称已经贴出来了!
    有什么理论依据说  Control ts = CrystalReportViewer1.Controls[2]; 有问题!
    我都说了,如果注掉 ts.Controls.Add(BtnExport) 程序不报错!
         说明 Control ts = CrystalReportViewer1.Controls[2];  根本是没有问题的!
         但程序在执行  ts.Controls.Add(BtnExport)  之前的TS.CONTROLS.count=17, 
        执行了 ts.Controls.Add(BtnExport) 之后,
    TS.CONTROLS.count=18! 但在 CrystalReportViewer1 中会出现上面的错误!
     
      

  8.   

    看来这个问题,在此是无法得到正解的! 
    那就结帖算了吧!谁要是有正解: EMAIL [email protected]
         
    谢谢!