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不存在啊,因为点击编辑后,编辑框是自带的。这种报错该怎么解决呢?
展开
 我来答
别骏琛00
2012-11-19 · 超过16用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:34.8万
展开全部
解决方法有两种:
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这种控件,不利于你了解实际代码的运行过程。
286718600
2012-11-19 · 超过16用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:37.6万
展开全部
既然它报这样的错误 你何不把textbox 换成LiteralControl试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式