数组越界

0 1看天下 2010-12-06 10:21:55
dr["scompanyname"] = dt_DWML.Select("scompanycode='" + arrSrcComp[i] + "'")[0]["scompanyname"].ToString();
为啥这句老显示数组越界呢?
还有就是根据表的编码查询对应的名称语句不是这样写吗?
各位大鸟们帮下忙撒!!!
...全文
248 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
0 1看天下 2010-12-06
  • 打赏
  • 举报
回复
就是dr["scompanyname"] = dt_DWML.Select("scompanycode='" + arrSrcComp[i] + "'")[i]["scompanyname"].ToString(); 的提示
0 1看天下 2010-12-06
  • 打赏
  • 举报
回复
这是那方法:
错误信息:;索引超出了数组界限。
private void cmb_HZFA_SelectedIndexChanged(object sender, EventArgs e)
{
string sSrcComp = dt_HZFA.Rows[cmb_HZFA.SelectedIndex]["SSRCCOMPCODE"].ToString();
string sDesComp = dt_HZFA.Rows[cmb_HZFA.SelectedIndex]["SDESCOMPCODE"].ToString();
this.UIP.FrameManager.ShowInformation("xx", sSrcComp + "||" + sDesComp);
reloadSrcComp(sSrcComp);
reloadDesComp(sDesComp);
}

private void reloadSrcComp(string sSrcComp)
{
this.Grid_SrcCom.Clear();
this.dt_SrcComp = this.dt_DWML.Clone();
this.Grid_SrcCom.DataSource = dt_SrcComp;
if (sSrcComp.Trim() != "")
{
//001;002;4LZTLJ000
string[] arrSrcComp = sSrcComp.Split(new Char[] { ';'});
for (int i = 0; i < arrSrcComp.Length; i++)
{
DataRow dr = dt_SrcComp.NewRow();
dr["scompanycode"] = arrSrcComp[i];
dr["scompanyname"] = dt_DWML.Select("scompanycode='" + arrSrcComp[i] + "'")[i]["scompanyname"].ToString();
dt_SrcComp.Rows.Add(dr);
Grid_SrcCom.Cols["scompanycode"].Caption = "单位编码";
Grid_SrcCom.Cols["scompanycode"].Width = 120;
Grid_SrcCom.Cols["scompanyname"].Caption = "单位名称";
Grid_SrcCom.Cols["scompanyname"].Width = 250;
}
}
}

private void reloadDesComp(string sDesComp)
{
this.Grid_DesCom.Clear();
this.dt_DesComp = this.dt_DWML.Clone();
this.Grid_DesCom.DataSource = dt_DesComp;
if (sDesComp.Trim() != "")
{
//hz1
DataRow dr = dt_DesComp.NewRow();
dr["scompanycode"] = sDesComp;
dr["scompanyname"] = dt_DWML.Select("scompanycode='" + sDesComp + "'")[0]["scompanyname"].ToString();
dt_DesComp.Rows.Add(dr);
Grid_DesCom.Cols["scompanycode"].Caption = "单位编码";
Grid_DesCom.Cols["scompanycode"].Width = 120;
Grid_DesCom.Cols["scompanyname"].Caption = "单位名称";
Grid_DesCom.Cols["scompanyname"].Width = 250;
}
}
jianshao810 2010-12-06
  • 打赏
  • 举报
回复
因为没有取到值。。。。
ha283 2010-12-06
  • 打赏
  • 举报
回复
设置断点调试, 看里面值的变化.
hongjiaoli 2010-12-06
  • 打赏
  • 举报
回复
把[0]改成[i]试试看!
0 1看天下 2010-12-06
  • 打赏
  • 举报
回复
//001;002;003
string[] arrSrcComp = sSrcComp.Split(new Char[] { ';'});
for (int i = 0; i < arrSrcComp.Length; i++)
{
DataRow dr = dt_SrcComp.NewRow();
dr["scompanycode"] = arrSrcComp[i];
dr["scompanyname"] = dt_DWML.Select("scompanycode='" + arrSrcComp[i] + "'")[0]["scompanyname"].ToString();
dt_SrcComp.Rows.Add(dr);
源代码是这样的,我就是想获得对应单位编码的单位名称
winner213 2010-12-06
  • 打赏
  • 举报
回复
要先判断下dt_DWML.Select()的结果(即Count > 0) 再去取值,否则直接取[0]在Count=0时肯定会报数组越界的异常的
TimZhuFaith 2010-12-06
  • 打赏
  • 举报
回复
dt_DWML.Select("scompanycode='" + arrSrcComp[i] + "'")
这个很有可能为null
chen8410 2010-12-06
  • 打赏
  • 举报
回复
dt_DWML.Select("scompanycode='" + arrSrcComp[i] + "'")
你这个得到的是0条记录,所以后面[0]取第一条数据肯定提示越界
0 1看天下 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 nofc2006 的回复:]
你最好分开写好一点:

C# code
dr["scompanyname"] = dt_DWML.Select("scompanycode='" + arrSrcComp[i] + "'")[0]["scompanyname"].ToString();


改成:


C# code
DataRow[] result = dt_DWML.Select("scompanycode……
[/Quote]
谢谢你,围墙哥,解决了,就是这个问题谢谢各位了,哈哈!!!
flyerwing 2010-12-06
  • 打赏
  • 举报
回复
if(!isnullorempty("string"))
{
}
全栈深入 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 nofc2006 的回复:]
你最好分开写好一点:

C# code
dr["scompanyname"] = dt_DWML.Select("scompanycode='" + arrSrcComp[i] + "'")[0]["scompanyname"].ToString();


改成:


C# code
DataRow[] result = dt_DWML.Select("scompanycode……
[/Quote]



 dr["scompanyname" = string.Empty;
少了一个"]"
全栈深入 2010-12-06
  • 打赏
  • 举报
回复
你最好分开写好一点:
dr["scompanyname"] = dt_DWML.Select("scompanycode='" + arrSrcComp[i] + "'")[0]["scompanyname"].ToString();


改成:

DataRow[] result = dt_DWML.Select("scompanycode='" + arrSrcComp[i] + "'");
if(result!=null && result.Length>0) //做匹配结果判断
dr["scompanyname"] = result[0]["scompanyname"];
else
dr["scompanyname" = string.Empty;
0 1看天下 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wuyq11 的回复:]
if(arrSrcComp.Length>i)
dr["scompanyname"] = dt_DWML.Select("scompanycode='" + arrSrcComp[i] + "'")[0]["scompanyname"].ToString();
dt_DWML.Select("scompanycode='" + arrSrcComp[i] + "'")[0]是否为null
[/Quote]没用
wuyq11 2010-12-06
  • 打赏
  • 举报
回复
if(arrSrcComp.Length>i)
dr["scompanyname"] = dt_DWML.Select("scompanycode='" + arrSrcComp[i] + "'")[0]["scompanyname"].ToString();
dt_DWML.Select("scompanycode='" + arrSrcComp[i] + "'")[0]是否为null

110,536

社区成员

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

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

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