请教一下,在运行以下的代码时,在((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('确定要删除吗?')"); }
}
}
谢谢了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('确定要删除吗?')"); }
}
}
不是6的问题,就是0的问题。八成是6的问题。
检查一下gridview的列,列的索引从零开始
列中的空间索引也是从零开始
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('确定要删除么?')");
}
}
比如只有5列的内容,你指定Cells后面的值时,最大只能为4,从0开始这个要注意。