加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 无法转换类型为’System.Web.UI.LiteralControl’的

发布时间:2020-12-16 04:03:01 所属栏目:asp.Net 来源:网络整理
导读:我收到此错误: 无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为“System.Web.Controls.TextBox”类型 我从ASPX页面的查询字符串中输入我的文本输入框,这里是代码: EditItemTemplate asp:TextBox ID="GV_Post_ID" runat="server" text='%# R
我收到此错误:
无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为“System.Web.Controls.TextBox”类型

我从ASPX页面的查询字符串中输入我的文本输入框,这里是代码:

<EditItemTemplate>
                        <asp:TextBox ID="GV_Post_ID" runat="server" text='<%# Request.QueryString["Post_ID"] %>'></asp:TextBox>
                    </EditItemTemplate>

但是当我运行它时,它停在这里:

cmd.Parameters.Add("@Post_ID",SqlDbType.VarChar).Value = ((TextBox)GV_InlineEditing.Rows[0].Cells[2].Controls[0]).Text;

我得到上面的错误.这是后面的代码:

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DSRConnectionString"].ConnectionString);
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "INSERT INTO RCA_Events(Post_ID,Date,Description) VALUES(@Post_ID,@Date,@Description)";
            cmd.Parameters.Add("@Post_ID",SqlDbType.VarChar).Value = ((TextBox)GV_InlineEditing.Rows[0].Cells[2].Controls[0]).Text;
            cmd.Parameters.Add("@Date",SqlDbType.VarChar).Value = ((TextBox)GV_InlineEditing.Rows[0].Cells[3].Controls[0]).Text;
            cmd.Parameters.Add("@Description",SqlDbType.VarChar).Value = ((TextBox)GV_InlineEditing.Rows[0].Cells[4].Controls[0]).Text;

请注意,如果我从ASPX页面中删除查询字符串,然后我手动插入值,那么它的工作原理. PLS.救命.
谢谢

解决方法

问题出在这里:

(文本框)GV_InlineEditing.Rows [0] .Cells [2] .Controls [0]

该单元格中的第一个控件不是您认为的TextBox.让我们假设GV_InlineEditing.Rows [0]安全地为您提供所需的行.做这样的事情:

TextBox myTextBox = GV_InlineEditing.Rows[0].FindControl("GV_Post_ID") as TextBox;
cmd.Parameters.Add("@Post_ID",SqlDbType.VarChar).Value = myTextBox.Text;

该代码可以更加安全,如下所示:

TextBox myTextBox = GV_InlineEditing.Rows[0].FindControl("GV_Post_ID") as TextBox;
if (myTextBox != null)
{
    cmd.Parameters.Add("@Post_ID",SqlDbType.VarChar).Value = myTextBox.Text;
}
else
{
    // Do something here.  Default value for the post id?
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读