请教一下,在运行以下的代码时,在((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('确定要删除吗?')");        }
    }
}

解决方案 »

  1.   

    e.Row.Cells[6].Controls[0]
    不是6的问题,就是0的问题。八成是6的问题。
      

  2.   

    楼主是不是按钮在第六列啊,那应该是Cells[5],从0开始算起的
      

  3.   

    Cells 从零开始。 重新检查GV列数
      

  4.   

    e.Row.Cells[6].Controls[0]这里的问题
     检查一下gridview的列,列的索引从零开始
    列中的空间索引也是从零开始
      

  5.   

    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('确定要删除么?')");
                }
            }
      

  6.   

    白话说:
    比如只有5列的内容,你指定Cells后面的值时,最大只能为4,从0开始这个要注意。