日期:2014-05-18  浏览次数:20999 次

C#中后台使用split出现的问题
我从前台页面的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

返回值里面有";"的,我测试过的.



------解决方案--------------------
string str = "11;12;13;14;15;16";
string[] arra = str.Split(new char[]{';'});

输出下看看.
------解决方案--------------------
该问题是下标溢出导致的,你可在this.txtContractNum.Text=sContractNumAll.Split( '; ')[1].ToString().Trim(); 
这句改成:

try
{
this.txtContractNum.Text=sContractNumAll.Split( '; ')[1].ToString().Trim(); 
}
catch{}
------解决方案--------------------
你还是认真测下,如果hidContractNum有‘;’是不会错的,
------解决方案--------------------
每一步都把值打印出来调试一下吧,怀疑是取值有问题
------解决方案--------------------
Split( '; ' )
===
Split( ';' )--";"后边多了个空格当然就找不到了,也就不存在[1]
还有Split(';')[1]取值后就是string类型就不要再tostring了,
唉 看到那些tostring就头疼
------解决方案--------------------
;后面多了空格吧..
------解决方案--------------------
调试下,不就解决了吗,注意符号的半角与全角.
  
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html