Gridview编辑问题
publicpartialclassadmin:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventA...
public partial class admin : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
GetUser();
}
public void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
GetUser();
}
public void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
GetUser();
}
public void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string myConn = System.Configuration.ConfigurationManager.ConnectionStrings["shopConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(myConn);
string username = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString();
string password = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text.ToString();
string answer = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text.ToString();
string question = ((TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Text.ToString();
string strSql = ("update users set username=@username,password=@password,answer=@answer,question=@question where username=@username");
SqlCommand cmd = new SqlCommand(strSql, conn);
cmd.Parameters.Add("@username", SqlDbType.VarChar, 50).Value = username;
cmd.Parameters.Add("@password", SqlDbType.VarChar, 50).Value = password;
cmd.Parameters.Add("@answer", SqlDbType.VarChar, 50).Value = answer;
cmd.Parameters.Add("@question", SqlDbType.VarChar, 50).Value = question;
conn.Open();
cmd.ExecuteNonQuery();
GridView1.EditIndex = -1;
GetUser();
}
public void GetUser()
{
string myConn = System.Configuration.ConfigurationManager.ConnectionStrings["shopConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(myConn);
conn.Open();
string sql = "Select * From users";
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds, "users");
GridView1.DataSource = ds;
GridView1.DataKeyNames = new string[] { "id" };
GridView1.DataBind();
conn.Close();
}
}
出现问题:(点更新的时候)
指定的参数已超出有效值的范围。
参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。
参数名: index
源错误:
行 34: string username = ((TextBox)GridView1.Rows
怎样在GRIDVIEW自带功能实现更新? 展开
{
protected void Page_Load(object sender, EventArgs e)
{
GetUser();
}
public void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
GetUser();
}
public void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
GetUser();
}
public void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string myConn = System.Configuration.ConfigurationManager.ConnectionStrings["shopConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(myConn);
string username = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text.ToString();
string password = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text.ToString();
string answer = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text.ToString();
string question = ((TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Text.ToString();
string strSql = ("update users set username=@username,password=@password,answer=@answer,question=@question where username=@username");
SqlCommand cmd = new SqlCommand(strSql, conn);
cmd.Parameters.Add("@username", SqlDbType.VarChar, 50).Value = username;
cmd.Parameters.Add("@password", SqlDbType.VarChar, 50).Value = password;
cmd.Parameters.Add("@answer", SqlDbType.VarChar, 50).Value = answer;
cmd.Parameters.Add("@question", SqlDbType.VarChar, 50).Value = question;
conn.Open();
cmd.ExecuteNonQuery();
GridView1.EditIndex = -1;
GetUser();
}
public void GetUser()
{
string myConn = System.Configuration.ConfigurationManager.ConnectionStrings["shopConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(myConn);
conn.Open();
string sql = "Select * From users";
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds, "users");
GridView1.DataSource = ds;
GridView1.DataKeyNames = new string[] { "id" };
GridView1.DataBind();
conn.Close();
}
}
出现问题:(点更新的时候)
指定的参数已超出有效值的范围。
参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: 指定的参数已超出有效值的范围。
参数名: index
源错误:
行 34: string username = ((TextBox)GridView1.Rows
怎样在GRIDVIEW自带功能实现更新? 展开
1个回答
展开全部
你为了在GridView里实现编辑功能,这样做是没必要的!因为它本身就有了编辑更新的功能,你这样自己再重新做模版来实现和它系统自带的编辑功能是一样的效果;如果你真希望用自己编辑模版来实现的话建议用datalist来做会比较简单.或者你可以在做个页面采用问号传值的方法把当前页中用户单击的GRIDVIEW的行的主键值传给下一页,在下一页可根据收到的主键值,来更好的完成你的编辑功能有美观!
对于.."弹出无法将类型为“System.Web.UI.WebControls.DataControlLinkButton”的对象强制转换为类型“System.Web.UI.WebControls.TextBox”。"的错误,那是因为Cells[1]是当前行的对应列的索引,索引值变了就跑到别的列,别的列里面的控件就不是TextBox了,所以出错!
对于.."弹出无法将类型为“System.Web.UI.WebControls.DataControlLinkButton”的对象强制转换为类型“System.Web.UI.WebControls.TextBox”。"的错误,那是因为Cells[1]是当前行的对应列的索引,索引值变了就跑到别的列,别的列里面的控件就不是TextBox了,所以出错!
网易云信
2023-12-06 广告
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同...
点击进入详情页
本回答由网易云信提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询