C# 无法将“System.Web.UI.WebControl.TextBox”类型的对象强制转换为“System.IConvertible”类型

C# 无法将“System.Web.UI.WebControl.TextBox”类型的对象强制转换为“System.IConvertible”类型,c#,asp.net,C#,Asp.net,当我更新网格中的一行时,我有一个包含书籍详细信息的网格,我无法将“System.Web.UI.WebControls.TextBox”类型的对象强制转换为“System.IConvertible”类型错误。请帮我解决这个错误。价格列是十进制数据类型 protected void grdBookDetails_RowUpdating(object sender, GridViewUpdateEventArgs e) { BookDetailsBEL.BookId = Convert.ToI

当我更新网格中的一行时,我有一个包含书籍详细信息的网格,我无法将“System.Web.UI.WebControls.TextBox”类型的对象强制转换为“System.IConvertible”类型错误。请帮我解决这个错误。价格列是十进制数据类型

protected void grdBookDetails_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    BookDetailsBEL.BookId = Convert.ToInt32(grdBookDetails.DataKeys[e.RowIndex].Value);
    BookDetailsBEL.BookName = ((TextBox)(grdBookDetails.Rows[e.RowIndex].FindControl("txtEditBookName"))).ToString();
    BookDetailsBEL.Author = ((TextBox)(grdBookDetails.Rows[e.RowIndex].FindControl("txtEditAuthor"))).ToString();
    BookDetailsBEL.Publisher = ((TextBox)(grdBookDetails.Rows[e.RowIndex].FindControl("txtEditPublisher"))).ToString();            
    BookDetailsBEL.Price = Convert.ToDecimal((TextBox)(grdBookDetails.Rows[e.RowIndex].FindControl("txtEditPrice")));
    e.Cancel = true;
    grdBookDetails.EditIndex = -1;
    GetBookDetails();            
}
必须使用.Text属性


您试图在设置价格的行上将文本框转换为十进制。您可能希望将文本框的文本转换为十进制。是。你能告诉我怎么做吗?引用。在你将它转换成文本框或使用ToString后发送文本。你在上面的一行中做了完全相同的事情..我按照你说的做了尝试,但我得到的输入字符串在同一行中的格式不正确。你在txtEditPrice中输入了什么?您必须在txtEditPrice中输入数字。您必须将txtEditPrice检查为数字,然后使用Convert.ToDecimal函数我只在txtEditPrice中输入了数字,但不知道为什么会出现此错误。如果有错误,则它们必须与该错误不同。我能看到你的错误吗?
protected void grdBookDetails_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            BookDetailsBEL.BookId = Convert.ToInt32(grdBookDetails.DataKeys[e.RowIndex].Value);
            BookDetailsBEL.BookName = ((TextBox)(grdBookDetails.Rows[e.RowIndex].FindControl("txtEditBookName"))).Text.ToString();
            BookDetailsBEL.Author = ((TextBox)(grdBookDetails.Rows[e.RowIndex].FindControl("txtEditAuthor"))).Text.ToString();
            BookDetailsBEL.Publisher = ((TextBox)(grdBookDetails.Rows[e.RowIndex].FindControl("txtEditPublisher"))).Text.ToString();
            BookDetailsBEL.Price = Convert.ToDecimal(((TextBox)(grdBookDetails.Rows[e.RowIndex].FindControl("txtEditPrice"))).Text.ToString());
            e.Cancel = true;
            grdBookDetails.EditIndex = -1;
            GetBookDetails();
        }