索引超出范围。必须为非负值并小于集合大小。

myjieli 2012-04-02 02:06:11
我在GridView1上面做了“详细信息”的按钮,当用户单击“详细按钮”的时候,就在GridView2里面显示详细的信息,可是当单击“详细信息”的时候出现了错误:

索引超出范围。必须为非负值并小于集合大小。


using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

using System.Data.SqlClient;


public partial class _11_4 : System.Web.UI.Page
{
public SqlConnection GetConnection()
{
string myStr = ConfigurationManager.AppSettings["ConnectionString"].ToString();
SqlConnection myConn = new SqlConnection(myStr);
return myConn;
}
protected void Page_Load(object sender, EventArgs e)
{

}

protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
//获取选择行的编号
string deptID = GridView1.DataKeys[e.NewSelectedIndex].Value.ToString();
string strsql = "SELECT * FROM tb_Student WHERE ID='" + deptID + "'";
SqlConnection con = GetConnection();
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(strsql, con);
DataSet ds = new DataSet();
sda.Fill(ds);
this.GridView2.DataSource = ds;
this.GridView2.DataBind();
}
}
...全文
230 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bindofn 2012-04-03
  • 打赏
  • 举报
回复
把GridView的属性DataKeyNames设置为主键,string deptID = GridView1.DataKeys[e.RowIndex].Value.ToString();
litongqq 2012-04-02
  • 打赏
  • 举报
回复
GridVew的要设DataKeyNames的主键
myjieli 2012-04-02
  • 打赏
  • 举报
回复
哦,打印出来之后是"0",也就是没有获得数据?
dalmeeme 2012-04-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 2 楼 的回复:
GridView1.DataKeys[e.NewSelectedIndex]
这句有问题吧。

在该方法里开头加一句Response.Write(GridView1.DataKeys.Count+"<br/>");
看看是多少,就明白了。


加了句:在该方法里开头加一句Response.Write(GridView1.DataKeys.Count+"<br……
[/Quote]
加上这句后那句报错的代码要注释掉的呀,不然怎么行呢。
ycproc 2012-04-02
  • 打赏
  • 举报
回复
NewSelectedIndex 没有取到索引吧!
myjieli 2012-04-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
GridView1.DataKeys[e.NewSelectedIndex]
这句有问题吧。

在该方法里开头加一句Response.Write(GridView1.DataKeys.Count+"<br/>");
看看是多少,就明白了。
[/Quote]

加了句:在该方法里开头加一句Response.Write(GridView1.DataKeys.Count+"<br/>");
还是出现:
“/website”应用程序中的服务器错误。
--------------------------------------------------------------------------------

索引超出范围。必须为非负值并小于集合大小。
参数名: index
dalmeeme 2012-04-02
  • 打赏
  • 举报
回复
GridView1.DataKeys[e.NewSelectedIndex]
这句有问题吧。

在该方法里开头加一句Response.Write(GridView1.DataKeys.Count+"<br/>");
看看是多少,就明白了。
  • 打赏
  • 举报
回复
string deptID = GridView1.DataKeys[e.NewSelectedIndex].Value.ToString();

判断一下e.NewSelectedIndex的值,检查例外

62,268

社区成员

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

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

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

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