ASP.NET GridView用代码实现编辑功能出错。
点击编辑,修改完数值后点击更新,弹出错误,提示:无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI....
点击编辑,修改完数值后点击更新,弹出错误,提示:无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.TextBox”。 通过代码实现删除功能都没有问题,但是实现编辑功能就不行了(点击编辑后再点击取消不会出错),下面附上代码: 前台通过添加删除,编辑事件,后台响应事件代码。表[Save]数据有4列,分别是ID,Name,Time,Ex,ID列设为主键。 protected void GridView2_RowEditing(object sender, GridViewEditEventArgs e) { this.GridView2.EditIndex = e.NewEditIndex; bind(); } protected void GridView2_RowUpdating(object sender, GridViewUpdateEventArgs e) { sqlcon = new SqlConnection(strCon); string sqlstr = "update [Save] set Names='" + ((TextBox)(GridView2.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',Time='" + ((TextBox)(GridView2.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim() + "',Ex='" + ((TextBox)(GridView2.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "' where ID='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'"; sqlcom = new SqlCommand(sqlstr, sqlcon); sqlcon.Open(); sqlcom.ExecuteNonQuery(); sqlcon.Close(); GridView1.EditIndex = -1; bind(); } protected void GridView2_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView2.EditIndex = -1; bind(); } public void bind() //绑定函数 { string sqlstr = "select ID as ID, Name as 姓名,Time as 时间,Ex as 事由 from [Save] where Name='" + TextBox4.Text.Trim() + "'"; sqlcon = new SqlConnection(strCon); SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon); DataSet myds = new DataSet(); sqlcon.Open(); myda.Fill(myds, "Save"); GridView2.DataSource = myds; GridView2.DataKeyNames = new string[] { "ID" }; GridView2.DataBind(); } 网上搜了下这种报错,有种解决办法是改为findcontrol("控件ID"),但是我这里的控件ID不存在啊,因为点击编辑后,编辑框是自带的。这种报错该怎么解决呢?
展开
1个回答
展开全部
解决方法有两种:
1.你调试一下GridView2_RowUpdating中的GridView2.Rows[e.RowIndex].Cells[x].Controls[0]的实际值为多少,根据实际情况,对应到你的sql语句中。x为0,1,2,3。
2.用repeater,datalist的替换gridview,然后,通过在相应的列中添加button按钮做为删除、更新等用户接口。用command事件处理实际的删除、更新等操作。
ps:不建议经常使用gridview这种控件,不利于你了解实际代码的运行过程。
1.你调试一下GridView2_RowUpdating中的GridView2.Rows[e.RowIndex].Cells[x].Controls[0]的实际值为多少,根据实际情况,对应到你的sql语句中。x为0,1,2,3。
2.用repeater,datalist的替换gridview,然后,通过在相应的列中添加button按钮做为删除、更新等用户接口。用command事件处理实际的删除、更新等操作。
ps:不建议经常使用gridview这种控件,不利于你了解实际代码的运行过程。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询