我从前台页面的GridView中取得两列值以;号做为分割,返回到后台中,如下:
ReturnValue = sgvRentContractSelect.DataKeys[gvr.RowIndex].Value.ToString() +";"+ gvr.Cells[1].Text;注:ReturnValue 为返回值,sgvRentContractSelect为GridView的ID现在在后台调用,要取;号的内容,将内容赋给一个textbox控件.代码如下:
string sContractNum, sContractNumAll;sContractNumAll = this.hidContractNum.Value.ToString().Trim();this.txtContractNum.Text=sContractNumAll.Split(';')[1].ToString().Trim();注:sContractNumAll = this.hidContractNum.Value.ToString().Trim();将前台返回的值赋给了sContractNumAll;问题:程序运行时,提示this.txtContractNum.Text=sContractNumAll.Split(';')[1].ToString().Trim();出错.
是Split(';')[1]出错
错误如下:Index was outside the bounds of the array.请高手给予解决,谢谢先.^_^补充:
ReturnValue=sgvRentContractSelect.DataKeys[gvr.RowIndex].Value.ToString() +";"+ gvr.Cells[1].Text;
这段代码返回的值是GridView中的表的关键字段+;+GridView中显示的第二列的值;
如关键字段是123,第二列的值是test;
返回的值是 123;test返回值里面有";"的,我测试过的.

解决方案 »

  1.   

    string str = "11;12;13;14;15;16";
    string[] arra = str.Split(new char[]{';'});输出下看看.
      

  2.   

    该问题是下标溢出导致的,你可在this.txtContractNum.Text=sContractNumAll.Split( '; ')[1].ToString().Trim(); 
    这句改成:try
    {
    this.txtContractNum.Text=sContractNumAll.Split( '; ')[1].ToString().Trim(); 
    }
    catch{}
      

  3.   

    你还是认真测下,如果hidContractNum有‘;’是不会错的,
      

  4.   

    Split(  '; ' )
    ===
    Split(  ';' )--";"后边多了个空格当然就找不到了,也就不存在[1]
    还有Split(';')[1]取值后就是string类型就不要再tostring了,
    唉  看到那些tostring就头疼
      

  5.   

    调试下,不就解决了吗,注意符号的半角与全角.
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  6.   

    问题解决了,是我程序写错地方了
    this.txtContractNum.Text=sContractNumAll.Split( '; ')[1].ToString().Trim(); 
    放在了Page_lode()里,页面刷新的时候Split的长度是1,取数组取不到[1],所以会报错谢谢各位大哥的帮忙