2014-02-06 55 views
0

我正在嘗試使用從GridView行中獲取的值在DataTable中添加一個新行。下面是我使用的代碼:無法在DataTable中添加一行

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Save") 
    { 
     DataTable dt = new DataTable(); 
     dt = (DataTable)ViewState["CurrentStuDt"]; 
     DataRow dr = null; 
     dr = dt.NewRow(); 
     dr["ID"] = Convert.ToInt32(gv.FooterRow.FindControl("txtInId")); 
     dr["Name"] = gv.FooterRow.FindControl("txtIName"); 
     dr["Class"] = gv.FooterRow.FindControl("txtIClass"); 
     dr["Section"] = gv.FooterRow.FindControl("txtISec"); 
     dt.Rows.Add(dr); 

     ViewState["CurrentStuDt"] = dt; 

     gv.DataSource = dt; 
     gv.DataBind(); 
    } 

}

,但我得到以下錯誤:

Unable to cast object of type 'System.Web.UI.WebControls.TextBox' to type 'System.IConvertible'. 

上線

dr["ID"] = Convert.ToInt32(gv.FooterRow.FindControl("txtInId")); 

快速和早期反應感激.. ...

回答

1
gv.FooterRow.FindControl("txtInId") 

會給你的控制不是它的價值。嘗試類似

TextBox myText = (TextBox)gv.FooterRow.FindControl("txtInId"); 
dr["ID"] = Convert.ToInt32(myText.Text); 
+0

我得到「文本框」的錯誤是「System.Web.UI.WebControls.TextBox」和「System.Windows.Forms.TextBox」因爲我之間不明確的引用使用'System.Windows.Forms'命名空間 –

+0

嘗試添加命名空間與控制像System.Windows.Forms.TextBox myText =(System.Windows.Forms.TextBox)gv.FooterRow.FindControl(「txtInId」); – Paritosh

0
int rowIndex = Convert.ToInt16(e.CommandArgument); 

dr["ID"] = Convert.ToInt32(((TextBox)gv.Rows[rowIndex].FindControl("txtInId")).Text.ToString());