IndexOutOfRangeException异常 在位置0处没有任何行

泼墨有点咸 2010-08-12 12:02:26
设计思路:
一个关于部门信息的主页面,该页面放置一个gridview,获取数据表中几个主要字段,单击第一个字段名称,链接到详细页面,该页面是一些label和textbox控件,接收数据表中的详细信息
在通用类(DepCommon)中定义几个const属性(关于数据表中的字段),创建一个方法BuildTable()返回一个table;
在详细页面的后台中,写入一个方法:
public void FillPage()
{
//获取上一页传过来的ID号
int depID = Convert.ToInt32(Request.Params[DepKey], 10);

//调用业务逻辑层的GetDepInfoByDepID方法
DepSystem dsystem=new DepSystem();
DataTable DepTable = dsystem.GetDepInfoByDepID(depID);

DataRow row = DepTable.Rows[0];

//将数据库中的数据分别填充在textbox控件中
this.txtBranch.Text = row[DepCommon.BranchID].ToString();
this.txtDepName.Text = row[DepCommon.DepName].ToString();
this.txtManager.Text = row[DepCommon.Manager].ToString();
this.txtTelOne.Text = row[DepCommon.Tel1].ToString();
this.txtTellTwo.Text = row[DepCommon.Tel2].ToString();
this.txtFax.Text = row[DepCommon.Fax].ToString();
this.txtProvince.Text = row[DepCommon.Province].ToString();
this.txtCity.Text = row[DepCommon.City].ToString();
this.txtArea.Text = row[DepCommon.District].ToString();
this.txtStreet.Text = row[DepCommon.Street].ToString();
this.txtPost.Text = row[DepCommon.PostCode].ToString();
}
运行时,出现IndexOutOfRangeException异常
在位置0处没有任何行
找了很久,都解决不了,很急,各位大虾走过路过,千万不要忽略过,帮小菜排忧解难一下,谢了
...全文
488 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ting564812573 2010-09-24
  • 打赏
  • 举报
回复
加个判断 if (dt.Rows.Count > 0) 就执行下面语句,否则就 提示
else{Response.Write("没有数据!");}
mr3 2010-09-15
  • 打赏
  • 举报
回复
郁闷了.我也遇到同样的问题...登录后在主页面A放一个框架,然后点击主页面A上的B按钮获取C的页面的信息显示在框架里,但是当点击框架的按钮后,过一会儿,在点击主页面A的那个B按钮时,就提示 在位置 0 处没有任何行。 郁闷了...我估计是代码问题 ...
Adechen 2010-08-12
  • 打赏
  • 举报
回复
建议在使用索引前来个判断,判断数据源是否为null,或者count是否=0
chen_ya_ping 2010-08-12
  • 打赏
  • 举报
回复
强烈建议楼主调试一下你的程序,调试是程序员最基本的功能。然后看看你的那个DepTable是不是有行的存在。
龍月 2010-08-12
  • 打赏
  • 举报
回复
DepTable 没有数据啊, 之前先判断 DepTable.rowCount>0
之后在操作
symbol_bc 2010-08-12
  • 打赏
  • 举报
回复
就是这句

DataTable DepTable = dsystem.GetDepInfoByDepID(depID);

就是没取出来值啊!表DepTable 一行都没有。
dqsweet 2010-08-12
  • 打赏
  • 举报
回复
召唤dsystem.GetDepInfoByDepID(depID);方法
泼墨有点咸 2010-08-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gongsun 的回复:]
唉...

DataTable DepTable = dsystem.GetDepInfoByDepID(depID);

检查你的 depID !!!

检查你的 存储过程!!!

-----------------------------

出现问题 不知道该怎么一步一步的 排查出问题吗???
[/Quote]
主页面的前台代码:
<asp:GridView ID="gvDepartment" runat="server" AutoGenerateColumns="False" Width="100%" AllowPaging="True" DataKeyNames="DeptID" OnPageIndexChanging="gvDepartment_PageIndexChanging" OnRowDataBound="gvDepartment_RowDataBound" OnRowDeleting="gvDepartment_RowDeleting" PageSize="5">
<Columns>
<asp:HyperLinkField DataNavigateUrlFormatString="./DepDetails.aspx?DeptID={0};"
DataTextField="DepName" HeaderText="部门名称" DataNavigateUrlFields="DeptID">
<ItemStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:HyperLinkField>

然后在详细页面的后台调用:
string DeptID;
DeptID = Request.QueryString["DeptID"].ToString();
int depID = Convert.ToInt32(DeptID);
最后:
DataTable DepTable = dsystem.GetDepInfoByDepID(depID);

我用数字作为GetDepInfoByDepID的参数的时候,就可以调用数据库中的数据,问题就出在depID,恳请大虾指点一下,万分感谢!!!
gongsun 2010-08-12
  • 打赏
  • 举报
回复
唉...

DataTable DepTable = dsystem.GetDepInfoByDepID(depID);

检查你的 depID !!!

检查你的 存储过程!!!

-----------------------------

出现问题 不知道该怎么一步一步的 排查出问题吗???
porschev 2010-08-12
  • 打赏
  • 举报
回复
就是没有取到数据。。

一般在写这种东西的时候。。

DataTable DepTable = dsystem.GetDepInfoByDepID(depID);
当你做完读取操作后都得加个判断

if(DepTable.Rows.Count != 0)
{

}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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