这个是结果:
“/WebApplication1”应用程序中的服务器错误。
--------------------------------------------------------------------------------索引超出范围。必须为非负值并小于集合大小。参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index源错误:
行 180: if(e.CommandName=="Edit")
行 181: {
行 182: string ID = this.DataGrid1.DataKeys[Size+e.Item.ItemIndex].ToString();
行 183: Session["CIID"] = ID;
行 184: this.Response.Redirect("/WebApplication1/M_clientinfo.aspx");
源文件: c:\inetpub\wwwroot\webapplication1\clientinfo.aspx.cs 行: 182 堆栈跟踪:
[ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index]
System.Collections.ArrayList.get_Item(Int32 index) +91
System.Web.UI.WebControls.DataKeyCollection.get_Item(Int32 index)
WebApplication1.std_select.DataGrid1_ItemCommand(Object source, DataGridCommandEventArgs e) in c:\inetpub\wwwroot\webapplication1\clientinfo.aspx.cs:182
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()这里是后台代码:
<asp:datagrid id=DataGrid1 runat="server" AutoGenerateColumns="False" BorderWidth="0px" OnPageIndexChanged="SearchGrid_PageIChanged" DataMember="LLClientInfo" DataSource="<%# dataSet31 %>" AllowPaging="True" BackColor="Transparent" DataKeyField="CIClientID" BorderColor="White" BorderStyle="None" Height="394px" Width="520px" EnableViewState="False">
<FooterStyle ForeColor="#000066" BorderStyle="Outset" BackColor="#CCCCFF"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="#CCFF99" BackColor="#009999"></SelectedItemStyle>
<EditItemStyle BorderStyle="Outset"></EditItemStyle>
<AlternatingItemStyle BorderStyle="Outset" BackColor="#CCCCCC"></AlternatingItemStyle>
<ItemStyle HorizontalAlign="Center" ForeColor="#660000" BorderStyle="Outset" BackColor="White"></ItemStyle>
<HeaderStyle Font-Size="Larger" Font-Bold="True" Wrap="False" HorizontalAlign="Center" ForeColor="#000099"
BorderStyle="Outset" BackColor="White"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="CIClientID" SortExpression="CIClientID" HeaderText="客户号">
<HeaderStyle Width="1%"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="CIClientState" SortExpression="CIClientState" HeaderText="客户状态">
<HeaderStyle Width="3%"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="CIOnlineState" SortExpression="CIOnlineState" HeaderText="客户在线状态">
<HeaderStyle Width="3%"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="CIStartDate" SortExpression="CIStartDate" HeaderText="服务开始日期">
<HeaderStyle Width="10%"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="CIEndDate" SortExpression="CIEndDate" HeaderText="服务结束日期">
<HeaderStyle Width="10%"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="CIUpdateTime" SortExpression="CIUpdateTime" HeaderText="信息更新时间">
<HeaderStyle Width="10%"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="CIAutoUpdateOptions" SortExpression="CIAutoUpdateOptions" HeaderText="自动更新选项">
<HeaderStyle Width="3%"></HeaderStyle>
</asp:BoundColumn>
<asp:ButtonColumn Text="删除" CommandName="Delete"></asp:ButtonColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
</Columns>
<PagerStyle HorizontalAlign="Right" ForeColor="#003399" BackColor="#99CCCC" Mode="NumericPages"></PagerStyle>
</asp:datagrid> 这里是前台代码:
public static int index;
private void Page_Load(object sender, System.EventArgs e)
{
sqlDataAdapter1.Fill(dataSet31);
DataGrid1.DataBind();
}
public void SearchGrid_PageIChanged(Object s, DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex = e.NewPageIndex;
BindGrid();
} public void BindGrid()
{
DataGrid1.DataSource = dataSet31;
DataGrid1.DataBind(); }
private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//判断选择的操作。如果是翻页查看,则执SearchGrid_PageIChanged
if( e.Item.ItemType==ListItemType.Pager)
return; int Size = DataGrid1.PageSize ;
if(e.CommandName=="Edit")
{
string ID = this.DataGrid1.DataKeys[Size*index+e.Item.ItemIndex].ToString();
Session["CIID"] = ID;
this.Response.Redirect("/WebApplication1/M_clientinfo.aspx");
return;
}
//判断是否为删除操作
if(e.CommandName=="Delete")
{
string ID=DataGrid1.DataKeys[e.Item.ItemIndex].ToString() ;
//执行删除操作
// label.InnerText = h.clientinfodeletemethod(ID); }
} }
}
执行到string ID = this.DataGrid1.DataKeys[Size*index+e.Item.ItemIndex].ToString(); 时就会报错,不知道为什么???郁闷,帮帮忙???
“/WebApplication1”应用程序中的服务器错误。
--------------------------------------------------------------------------------索引超出范围。必须为非负值并小于集合大小。参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index源错误:
行 180: if(e.CommandName=="Edit")
行 181: {
行 182: string ID = this.DataGrid1.DataKeys[Size+e.Item.ItemIndex].ToString();
行 183: Session["CIID"] = ID;
行 184: this.Response.Redirect("/WebApplication1/M_clientinfo.aspx");
源文件: c:\inetpub\wwwroot\webapplication1\clientinfo.aspx.cs 行: 182 堆栈跟踪:
[ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index]
System.Collections.ArrayList.get_Item(Int32 index) +91
System.Web.UI.WebControls.DataKeyCollection.get_Item(Int32 index)
WebApplication1.std_select.DataGrid1_ItemCommand(Object source, DataGridCommandEventArgs e) in c:\inetpub\wwwroot\webapplication1\clientinfo.aspx.cs:182
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()这里是后台代码:
<asp:datagrid id=DataGrid1 runat="server" AutoGenerateColumns="False" BorderWidth="0px" OnPageIndexChanged="SearchGrid_PageIChanged" DataMember="LLClientInfo" DataSource="<%# dataSet31 %>" AllowPaging="True" BackColor="Transparent" DataKeyField="CIClientID" BorderColor="White" BorderStyle="None" Height="394px" Width="520px" EnableViewState="False">
<FooterStyle ForeColor="#000066" BorderStyle="Outset" BackColor="#CCCCFF"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="#CCFF99" BackColor="#009999"></SelectedItemStyle>
<EditItemStyle BorderStyle="Outset"></EditItemStyle>
<AlternatingItemStyle BorderStyle="Outset" BackColor="#CCCCCC"></AlternatingItemStyle>
<ItemStyle HorizontalAlign="Center" ForeColor="#660000" BorderStyle="Outset" BackColor="White"></ItemStyle>
<HeaderStyle Font-Size="Larger" Font-Bold="True" Wrap="False" HorizontalAlign="Center" ForeColor="#000099"
BorderStyle="Outset" BackColor="White"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="CIClientID" SortExpression="CIClientID" HeaderText="客户号">
<HeaderStyle Width="1%"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="CIClientState" SortExpression="CIClientState" HeaderText="客户状态">
<HeaderStyle Width="3%"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="CIOnlineState" SortExpression="CIOnlineState" HeaderText="客户在线状态">
<HeaderStyle Width="3%"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="CIStartDate" SortExpression="CIStartDate" HeaderText="服务开始日期">
<HeaderStyle Width="10%"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="CIEndDate" SortExpression="CIEndDate" HeaderText="服务结束日期">
<HeaderStyle Width="10%"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="CIUpdateTime" SortExpression="CIUpdateTime" HeaderText="信息更新时间">
<HeaderStyle Width="10%"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="CIAutoUpdateOptions" SortExpression="CIAutoUpdateOptions" HeaderText="自动更新选项">
<HeaderStyle Width="3%"></HeaderStyle>
</asp:BoundColumn>
<asp:ButtonColumn Text="删除" CommandName="Delete"></asp:ButtonColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
</Columns>
<PagerStyle HorizontalAlign="Right" ForeColor="#003399" BackColor="#99CCCC" Mode="NumericPages"></PagerStyle>
</asp:datagrid> 这里是前台代码:
public static int index;
private void Page_Load(object sender, System.EventArgs e)
{
sqlDataAdapter1.Fill(dataSet31);
DataGrid1.DataBind();
}
public void SearchGrid_PageIChanged(Object s, DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex = e.NewPageIndex;
BindGrid();
} public void BindGrid()
{
DataGrid1.DataSource = dataSet31;
DataGrid1.DataBind(); }
private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//判断选择的操作。如果是翻页查看,则执SearchGrid_PageIChanged
if( e.Item.ItemType==ListItemType.Pager)
return; int Size = DataGrid1.PageSize ;
if(e.CommandName=="Edit")
{
string ID = this.DataGrid1.DataKeys[Size*index+e.Item.ItemIndex].ToString();
Session["CIID"] = ID;
this.Response.Redirect("/WebApplication1/M_clientinfo.aspx");
return;
}
//判断是否为删除操作
if(e.CommandName=="Delete")
{
string ID=DataGrid1.DataKeys[e.Item.ItemIndex].ToString() ;
//执行删除操作
// label.InnerText = h.clientinfodeletemethod(ID); }
} }
}
执行到string ID = this.DataGrid1.DataKeys[Size*index+e.Item.ItemIndex].ToString(); 时就会报错,不知道为什么???郁闷,帮帮忙???
解决方案 »
- C# 中 Devices 命名空间是什么?
- 请求那位大大给个用C#编写的钟表程序
- F:\net_web\Lx_lltjxt\CreateImage\CreateImage.aspx.resx 文件“CreateImage.aspx.resx”的资源转换失败。有多个根元素。 行 43,位置 2
- 边学边做,初学者向大家问个初始化问题
- 正则表达式的高手看过来:求提取电子邮件的正则表达式(不是检验)
- 如何在C#生成的图片上添加随即噪点
- sqlserver数据库如何设置写入数据,只要主键相同就覆盖原有数据,谢谢
- 关于DataGrid
- url重写之后,aspx和htm页面进不了404
- C#调用C++ dll时参数传递编译不通过
- 如何关闭启动窗体而又不退出程序
- C# DataGrid控件 增 删 改 查
if (e.ListType=ListType.Item||e.ListType=ListType.Altering)
{string ID = this.DataGrid1.DataKeys[Size+e.Item.ItemIndex].ToString(); }Size+e.Item.ItemIndex 超出了DataGrid1.DataKeys的行数记录
解决方法是删除记录后重新绑定数据之前先判断一下,如果当前页是最后一页,并且该页只有一条记录,那么就手工修改 CurrentPageIndex 属性。
以下是代码
====================================================================================
if(DataGrid1.PageCount>1 && DataGrid1.CurrentPageIndex=(DataGrid1.PageCount-1) && DataGrid1.Items.Count=1)
{
DataGrid1.CurrentPageIndex=DataGrid1.CurrentPageIndex-1;
}
BindGrid();//重新数据绑定
===================================================================================
Size+e.Item.ItemIndex 没有超出了DataGrid1.DataKeys的行数记录
最好是CommandName=“Edit1”,因为Edit可能和系统命令冲突,
然后在后天if(CommandName==“Edit1”)
...