gpt4 book ai didi

asp.net - 无法转换类型为 ‘System.Web.UI.LiteralControl’ 的对象错误

转载 作者:行者123 更新时间:2023-12-02 12:01:31 25 4
gpt4 key购买 nike

我收到此错误:无法将“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 页面中删除查询字符串,然后手动插入该值,那么它就可以工作。请。帮助。谢谢

最佳答案

问题出在这里:

(TextBox)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?
}

关于asp.net - 无法转换类型为 ‘System.Web.UI.LiteralControl’ 的对象错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12979100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com