在线等,在线结贴,在线给分 》》》

chenjinjie 2006-06-12 02:01:13
对DataGrid中的数据更新时,调试时,出现了以下异常:

索引超出了数组界限。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.IndexOutOfRangeException: 索引超出了数组界限。

源错误:


行 214: catch(Exception ex)
行 215: {
行 216: throw ex;
行 217: }
行 218: finally


源文件:
private void DataGridList_ItemCommand(objectsource,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName=="Edit")
{
this.DataGridList.EditItemIndex=e.Item.ItemIndex;
DataGrid_bind(lblWhere.Text);
}
if(e.CommandName=="Update")
{
try
{
lianxi.Components.Entity.SalaryEnt _obj=new lianxi.Components.Entity.SalaryEnt ()_obj.f_gz20 =((TextBox)e.Item.Cells[4].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[4].Controls [0]).Text) ;

_obj.f_gz10 =((TextBox)e.Item.Cells[5].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[5].Controls[0]).Text) ;

_obj.f_gz42 =((TextBox)e.Item.Cells[6].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[6].Controls[0]).Text) ;

_obj.f_gz11 =((TextBox)e.Item.Cells[7].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[7].Controls[0]).Text) ;

_obj.f_gz12 =((TextBox)e.Item.Cells[8].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[8].Controls[0]).Text) ;

_obj.f_gz13 =((TextBox)e.Item.Cells[9].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[9].Controls[0]).Text) ;

_obj.f_gz14 =((TextBox)e.Item.Cells[10].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[10].Controls[0]).Text) ;

_obj.f_gz43 =((TextBox)e.Item.Cells[11].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[11].Controls[0]).Text) ;

_obj.f_gz15 =((TextBox)e.Item.Cells[12].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[12].Controls[0]).Text) ;

_obj.f_gz44 =((TextBox)e.Item.Cells[13].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[13].Controls[0]).Text) ;

_obj.f_gz21 =((TextBox)e.Item.Cells[14].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[14].Controls[0]).Text) ;

_obj.f_gz29 =((TextBox)e.Item.Cells[15].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[15].Controls[0]).Text) ;

_obj.f_gz23 =((TextBox)e.Item.Cells[16].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[16].Controls[0]).Text) ;

_obj.f_gz22 =((TextBox)e.Item.Cells[17].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[17].Controls[0]).Text) ;

_obj.f_gz45 =((TextBox)e.Item.Cells[18].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[18].Controls[0]).Text) ;

_obj.f_gz36 =((TextBox)e.Item.Cells[19].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[19].Controls[0]).Text) ;

_obj.f_gz30 =((TextBox)e.Item.Cells[20].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[20].Controls[0]).Text) ;

_obj.f_gz33 =((TextBox)e.Item.Cells[21].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[21].Controls[0]).Text) ;

_obj.f_gz34 =((TextBox)e.Item.Cells[22].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[22].Controls[0]).Text) ;

_obj.f_gz38 =((TextBox)e.Item.Cells[23].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[23].Controls[0]).Text) ;

_obj.f_gz32 =((TextBox)e.Item.Cells[24].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[24].Controls[0]).Text) ;

_obj.f_gz40 =((TextBox)e.Item.Cells[25].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[25].Controls[0]).Text) ;

_obj.f_gz41 =((TextBox)e.Item.Cells[26].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[26].Controls[0]).Text) ;

_obj.f_gz24 =((TextBox)e.Item.Cells[27].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[27].Controls[0]).Text) ;

_obj.f_gzt2 =((TextBox)e.Item.Cells[28].Controls[0]).Text;

_obj.f_gz28 =((TextBox)e.Item.Cells[29].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[29].Controls[0]).Text) ;

_obj.f_gzt1 =((TextBox)e.Item.Cells[30].Controls[0]).Text;

_obj.f_gz16 =((TextBox)e.Item.Cells[31].Controls[0]).Text==""?0:Convert.ToDecimal(((TextBox)e.Item.Cells[31].Controls[0]).Text) ;

_obj.f_gzt5 =((TextBox)e.Item.Cells[32].Controls[0]).Text;

lianxi.Components.BusApp .SalaryApp.Update_Event(_obj);
}
catch(Exception ex)
{
throw ex;
}
finally
{
this.DataGridList.EditItemIndex=-1;
DataGrid_bind(lblWhere.Text);
}
}
}

堆栈跟踪:


[IndexOutOfRangeException: 索引超出了数组界限。]
lianxi.RS.Salary.DataGridList_ItemCommand(Object source, DataGridCommandEventArgs e) in c:\inetpub\wwwroot\lianxi\rs\salary.aspx.cs:216
System.Web.UI.WebControls.DataGrid.OnItemCommand(DataGridCommandEventArgs e)
System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e)
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e)
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e)
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
System.Web.UI.Page.ProcessRequestMain()

应该是在以上的源文件出错,但是我就是查不出来,大家给看看,最好能修改
注:SalaryEnt为一个类体,f_gz20 等属性都是在其定义好的

...全文
129 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenjinjie 2006-06-13
  • 打赏
  • 举报
回复
还是自己给自己结贴了
简要说明:缺少了参数
chenjinjie 2006-06-12
  • 打赏
  • 举报
回复
跟踪到
finally
{
this.DataGridList.EditItemIndex=-1;
DataGrid_bind(lblWhere.Text);
}
后就出现了我上面的问题。
看来明天还要再发此帖了
cbo5 2006-06-12
  • 打赏
  • 举报
回复
跟踪调试啊
chenjinjie 2006-06-12
  • 打赏
  • 举报
回复
没人顶,就只能自己给自己顶了
jerrie_1 2006-06-12
  • 打赏
  • 举报
回复
LZ跟踪调试一下,看看错在那一行哟?
chenjinjie 2006-06-12
  • 打赏
  • 举报
回复
前台代码:
<asp:DataGrid id="DataGridList" runat="server" Width="100%" AllowSorting="True" BorderColor="#79BCEF" BorderWidth="1px" PageSize="20" AutoGenerateColumns="False" DataKeyField="ID">
<ItemStyle CssClass="dgItem"></ItemStyle>
<HeaderStyle CssClass="dgTitle"></HeaderStyle>
<Columns>
<asp:TemplateColumn Visible="true">
<ItemStyle Width="30px"></ItemStyle>
<ItemTemplate>
<ASP:ImageButton id="Imagebutton1" IMAGEURL="../images/toolbar/DeleteBtn.gif" CAUSESVALIDATION="false" COMMANDNAME="Delete" RUNAT="server">
</ASP:ImageButton>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="EmployeeID" SortExpression="EmployeeID" HeaderText="员工编号" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="EmployeeName" SortExpression="EmployeeName" HeaderText="员工姓名" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="DepartmentName" SortExpression="DepartmentName" HeaderText="部门名称" ReadOnly="True"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz20" HeaderText="基本工资"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz10" HeaderText="应出勤天数"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz42" HeaderText="实际出勤天数"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz11" HeaderText="应出勤天数"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz12" HeaderText="加晚班天数"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz13" HeaderText="加晚班工资"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz14" HeaderText="加白班天数"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz43" HeaderText="加白班工资"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz15" HeaderText="请假天数"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz44" HeaderText="请假扣工资"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz21" HeaderText="岗位工资"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz29" HeaderText="餐费补贴"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz23" HeaderText="夜餐费补贴"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz22" HeaderText="满勤奖金"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz45" HeaderText="扣水电费"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz36" HeaderText="扣卫生费"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz30" HeaderText="扣餐费"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz33" HeaderText="扣工服费"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz34" HeaderText="扣厂牌费"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz38" HeaderText="押金"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz32" HeaderText="三金"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz40" HeaderText="上转零头"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz41" HeaderText="下转零头"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz24" HeaderText="其他奖励"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gzt2" HeaderText="奖励事由"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz28" HeaderText="其他处罚"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gzt1" HeaderText="处罚事由"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gz16" HeaderText="实发工资"></asp:BoundColumn>
<asp:BoundColumn DataField="f_gzt5" HeaderText="签名"></asp:BoundColumn>
<asp:ButtonColumn ButtonType="LinkButton" CommandName="Edit" Text="Edit" Visible="False"></asp:ButtonColumn>
<asp:ButtonColumn ButtonType="LinkButton" CommandName="Update" Text="Update" Visible="False"></asp:ButtonColumn>
</Columns>
<PagerStyle Visible="False" NextPageText="下一页" PrevPageText="上一页"></PagerStyle>
</asp:DataGrid>
chenjinjie 2006-06-12
  • 打赏
  • 举报
回复
to:aspdotnet2005(天中之子、为中原喝采![我想找兼职MSN:Red-Maple@hot)
1.再查一次DataGrid的BoundColumn,Cells没错
2.我是直接用DataGrid的自动编辑功能来实现的,而且是用绑定列来绑定数据源的
aspdotnet2005 2006-06-12
  • 打赏
  • 举报
回复
只有猜你的错误了,给的错误不明确,salary.aspx.cs:216 到底是哪一行????
很有可能:
e.Item.Cells[n].Controls[0]).Text
----------
1、Cells没有那么多
2、某个Cell内没有控件
chenjinjie 2006-06-12
  • 打赏
  • 举报
回复
其中f_gz20被附与DataGrid中的第5列字段的值

62,041

社区成员

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

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

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

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