C#数组边界问题

Mysap-gwg 2010-01-25 01:32:46
private void tr_BindList()
{
if (!backgroundWorkerDGVRead.IsBusy)
{
dataGridView_Left.EndEdit();

StartBGW();
((W_MAIN)this.MdiParent).toolStripStatusLabelState.Text = "与服务器通信中..."; ; //서버와 통신중

PrevRow = 0;
string sysid = "";
string str_MATCOD = txt_MATCOD.Text.Trim();
string str_stoccd = cmb_stoccd.Text.Trim();
string str_iediv = cmb_iediv.Text.Trim();
string str_rtdiv = cmb_rtdiv.Text.Trim();
string str_infday = fdateTime.Value.ToString("yyyy-MM-dd HH:mm:ss.sss");
string str_tnfday = tdateTime.Value.ToString("yyyy-MM-dd HH:mm:ss.sss");
if (str_stoccd == "ALL")
{str_stoccd = "*";}

if (str_iediv == "ALL")
{ str_iediv = "*"; }

if (str_rtdiv == "ALL")
{ str_rtdiv = "*"; }

object[] oData = { -1, sysid,str_MATCOD,str_stoccd,str_iediv,str_rtdiv,str_infday,str_tnfday}
backgroundWorkerDGVRead.RunWorkerAsync(oData); //
}
}

private void ReadData(object sender, DoWorkEventArgs e) // gwg Retrieve(4)
{
int iRow = (int)((object[])e.Argument)[0];//0: -1왼쪽그리드, 0보다 큰수 메인 그리드 Row Index, 1: Sysid, 2: parentid, 3: Mode
string str_MATCOD = (string)((object[])e.Argument)[2];
string str_stoccd = (string)((object[])e.Argument)[3];
string str_iediv = (string)((object[])e.Argument)[4];
string str_rtdiv = (string)((object[])e.Argument)[5];
string str_infday = (string)((object[])e.Argument)[6];
string str_tnfday = (string)((object[])e.Argument)[7];


if (iRow.Equals(-1))// 왼쪽 그리드 str_infday, str_tnfday,
{
DataTable dt = service.get_wm1s01(str_MATCOD, str_stoccd,str_iediv,str_rtdiv,str_infday ,str_tnfday, UserInfo.DBINFO).Tables[0];


IsinitDGV = true;//DataGridView 초기화 시작

this.Invoke(new CallBackDGV(SetDGV_Clear), new object[] { dataGridView_Left });

for (int i = 0; i < dt.Rows.Count; i++)
{
try
{
if (backgroundWorkerDGVRead.CancellationPending)//BackgroundWorker 취소 메시지 발생 여부
{
e.Cancel = true;
break;
}
this.Invoke(new CallBackSetDGV(SetDGV_Left), new object[] { i, dt });
backgroundWorkerDGVRead.ReportProgress(PerCalculator(i, dt.Rows.Count));//프로세스바 증가 보고
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}


}

-----------------------
DataTable dt = service.get_wm1s01(str_MATCOD, str_stoccd,str_iediv,str_rtdiv,str_infday ,str_tnfday, UserInfo.DBINFO).Tables[0];
运行到此时,显示异常:
System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.Exception: 索引(从零开始)必须大于或等于零,且小于参数列表的大小。
我查找了一下,数组对象没有问题。
...全文
283 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mysap-gwg 2010-02-06
  • 打赏
  • 举报
回复
谢谢,大家了,大家说的都是一方面的原因,我的问题已经解决了,是frame框架版本不对,打了个sp1补丁就好了。
jimh 2010-01-26
  • 打赏
  • 举报
回复
DataTable dt = service.get_wm1s01(str_MATCOD, str_stoccd,str_iediv,str_rtdiv,str_infday ,str_tnfday, UserInfo.DBINFO).Tables[0];

你要检查返回值Dataset包含得Table数量,很明显,Table数量为0,直接使用.Tables[0]当然出错。
xupeihuagudulei 2010-01-26
  • 打赏
  • 举报
回复
韩国泡菜?
xujiaoxiang 2010-01-26
  • 打赏
  • 举报
回复
是service.get_wm1s01方法执行出错,查看一下service.get_wm1s01方法
Mysap-gwg 2010-01-25
  • 打赏
  • 举报
回复
如果是方法与service中不一致,以及参数类型,个数不一致的话,编译的时候就通不过。我是编译完了,单击查询时,出的错。
Mysap-gwg 2010-01-25
  • 打赏
  • 举报
回复
你们说的,我都注意了,好像都不是,编译都通过了,就是运行后,单击查询的时候就提示这个错误。
xujiaoxiang 2010-01-25
  • 打赏
  • 举报
回复
貌似service.get_wm1s01方法出错,看一下服务代码吧
itliyi 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yangglemu 的回复:]
下的韩国大棒子的代码?
[/Quote]
  • 打赏
  • 举报
回复
下的韩国大棒子的代码?
falx2004 2010-01-25
  • 打赏
  • 举报
回复
参数 类型 或个数 不一致导致的吧?

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧