指定的参数已超出有效值的范围。

wwsnowfoxww 2010-06-04 05:05:57
请教一下,在运行以下的代码时,在((LinkButton)(e.Row.Cells[6].Controls[0])).Attributes.Add("onclick", "return confirm('确定要删除吗?')");出现了“指定的参数已超出有效值的范围。”的错误,想问一下是怎么回事?怎么修改啊?
谢谢了

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 _Default : System.Web.UI.Page
{

SqlConnection sqlcon;
SqlCommand sqlcom;
string strCon = @"Data Source=.\SQLEXPRESS;Initial Catalog=snowfox;Integrated Security=True";
protected void Page_Load(object sender, EventArgs e)
{

if (!IsPostBack)
{
bind();
}


}

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string sqlstr = "delete from hyxx where hyid='"+GridView1.DataKeys[e.RowIndex].Value.ToString()+"'";
sqlcon = new SqlConnection(strCon);
sqlcom = new SqlCommand(sqlstr, sqlcon);
sqlcon.Open();
sqlcom.ExecuteNonQuery();// 执行Update命令
sqlcon.Close();
bind();
}


protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{

sqlcon = new SqlConnection(strCon);
string sqlstr = "update hyxx set hyname='"+
((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim()+"',hyxb='"+
((DropDownList)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).FindControl("DropDownList1")).Text.ToString()+ "', hyjg='" +
((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim()+"'where hyid='"+
GridView1.DataKeys[e.RowIndex].Value.ToString()+"'";
//取得Gridview中第e.RowIndex索引行的索引为2的单元格里的索引为0的控件强转为TEXTBOX获得其中的值

sqlcom = new SqlCommand(sqlstr, sqlcon);
sqlcon.Open();
sqlcom.ExecuteNonQuery();// 执行Update命令
sqlcon.Close();
GridView1.EditIndex=-1;//取消编辑状态
bind(); //重新绑定GridView数据

}


protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;//取消编辑状态
bind();
}

public void bind()
{
DropDownList ddl;
string sqlstr = "select * from hyxx";
sqlcon = new SqlConnection(strCon);
SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
DataSet myds = new DataSet();
sqlcon.Open();
myda.Fill(myds, "hyxx");
GridView1.DataSource = myds;
GridView1.DataKeyNames = new string[] { "hyid" };
GridView1.DataBind();
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
DataRowView mydrv = myds.Tables["hyxx"].DefaultView[i];
if (Convert.ToString(mydrv["hyxb"]).Trim() == "男")
{
ddl = (DropDownList)GridView1.Rows[i].FindControl("DropDownList1");
ddl.SelectedIndex = 0;
}
if (Convert.ToString(mydrv["hyxb"]).Trim() == "女")
{
ddl = (DropDownList)GridView1.Rows[i].FindControl("DropDownList1");
ddl.SelectedIndex = 1;
}

}

sqlcon.Close();
}


protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex ;//编辑状态
bind();
}


protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;

bind();
}


public SqlDataReader ddlbind()
{
string sqlstr = "select distinct hyxb from hyxx";//取出“男”,“女”
sqlcon = new SqlConnection(strCon);
SqlCommand sqlcom=new SqlCommand(sqlstr,sqlcon);
sqlcon.Open();
return sqlcom.ExecuteReader();


}

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType==DataControlRowType.DataRow)
{
((LinkButton)(e.Row.Cells[6].Controls[0])).Attributes.Add("onclick", "return confirm('确定要删除吗?')");

}
}
}
...全文
884 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqerhu 2010-06-07
  • 打赏
  • 举报
回复
问梁老师去
zyn1223 2010-06-05
  • 打赏
  • 举报
回复
跟踪下列数就可以看出来了 因该是6的问题 你页面设置了几个控制按钮,如果只有一个 ,那么 0是没有错误的
竹林听雨2005 2010-06-05
  • 打赏
  • 举报
回复
白话说:
比如只有5列的内容,你指定Cells后面的值时,最大只能为4,从0开始这个要注意。
wwsnowfoxww 2010-06-05
  • 打赏
  • 举报
回复
gridview是7列啊。
wuyq11 2010-06-04
  • 打赏
  • 举报
回复
Cells[6].Controls存在问题
OnClientClick="return confirm('确定要删除吗?')"
if (e.Row.RowType == DataControlRowType.DataRow)
{
Buuton btn = e.Row.Cells[0].Controls[0] as Buuton ;
if (btn != null)
{
btn.Attributes.Add("onclick", "return confirm('确定要删除么?')");
}
}
pgameli 2010-06-04
  • 打赏
  • 举报
回复
e.Row.Cells[6].Controls[0]这里的问题
检查一下gridview的列,列的索引从零开始
列中的空间索引也是从零开始
caoqingsha 2010-06-04
  • 打赏
  • 举报
回复
两个所引的下标都是从0开始的
检查一下数据库总共有几行数据 别超过了最大值,后面的就是第几列了 ,别超过了最大的列数就行了!!!
YISUKU_LEE 2010-06-04
  • 打赏
  • 举报
回复
Cells 从零开始。 重新检查GV列数
aluogang 2010-06-04
  • 打赏
  • 举报
回复
楼主是不是按钮在第六列啊,那应该是Cells[5],从0开始算起的
yasire 2010-06-04
  • 打赏
  • 举报
回复
e.Row.Cells[6].Controls[0]
不是6的问题,就是0的问题。八成是6的问题。
皇城龙三 2010-06-04
  • 打赏
  • 举报
回复
已经提示出来了:指定的参数已超出有效值的范围

那你就看看你要添加的数据,和你方数据的地方是否匹配

比如,你定义了5个屋子,现在却有6个屋子的东西要放进去,那么就会报错

62,046

社区成员

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

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

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

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