C# Gridview中的文本框返回null或';System.Web.UI.WebControls.TextBox';
我在从文本框检索数据时遇到问题。文本框位于Gridview中。我试着调试,结果显示我收集textbox值的变量返回C# Gridview中的文本框返回null或';System.Web.UI.WebControls.TextBox';,c#,asp.net,visual-studio,gridview,textbox,C#,Asp.net,Visual Studio,Gridview,Textbox,我在从文本框检索数据时遇到问题。文本框位于Gridview中。我试着调试,结果显示我收集textbox值的变量返回null或System.Web.UI.WebControls.textbox 你能帮我弄清楚是什么问题吗 下面是来自后端和gridview的代码 public void Button_Submit_Onclick(object sender, EventArgs e) { for (int i = 0; i < GridView2.Rows.Count; i++)
null
或System.Web.UI.WebControls.textbox
你能帮我弄清楚是什么问题吗
下面是来自后端和gridview的代码
public void Button_Submit_Onclick(object sender, EventArgs e)
{
for (int i = 0; i < GridView2.Rows.Count; i++)
{
//Textbox from Gridview
TextBox txt_field = (TextBox)GridView2.Rows[i].Cells[12].FindControl("txt_Comment");
//Connection string
con.ConnectionString = ConfigurationManager.ConnectionStrings["TestDeductionsConnectionString2"].ToString();
//id of column
int recordid = Convert.ToInt32(GridView2.DataKeys[i].Values[0]);
//checkbox value
CheckBox cbox = (CheckBox)GridView2.Rows[i].FindControl("CheckBox1");
bool private1 = Convert.ToBoolean(cbox.Checked);
//open connection and creating sqlcommand
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
con.Open();
cmd.CommandText = "Update DetailCosts set private='" + private1 + "' Komentar='" + txt_field + "' where recordid=" + recordid;
//
cmd.Parameters.AddWithValue("@private1", SqlDbType.Bit).Value = private1;
cmd.Parameters.AddWithValue("@recordid", SqlDbType.Int).Value = recordid.ToString();
cmd.Parameters.AddWithValue("@Komentar", SqlDbType.NChar).Value = txt_field.ToString();
cmd.ExecuteNonQuery();
if (private1==true)
{
//DateTime date = DateTime.Now;
//cmd.CommandText = "Update AprovedCosts set AprovedCosts.AprovalUser = ";
cmd.CommandText = "Update DetailCosts set privateCost=Costs where recordid=" + recordid;
cmd.ExecuteNonQuery();
}
else
{
cmd.CommandText = "Update DetailCosts set privateCost=0 where recordid=" + recordid;
cmd.ExecuteNonQuery();
}
con.Close();
}
}
public void按钮\u Submit\u Onclick(对象发送方,事件参数e)
{
对于(int i=0;i
Gridview:
<asp:TemplateField HeaderText="Comment">
<ItemTemplate>
<asp:TextBox ID="txt_Comment" runat="server" Text='<%# Eval("Komentar") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
尝试使用txt\u field.Text
而不是txt\u field.ToString()
来获取值。您正在搜索可能不存在的控件,并将其分配给文本框控件
TextBox txt_field = (TextBox)GridView2.Rows[i].Cells[12].FindControl("txt_Comment");
为什么不将textbox.text值指定给GridView2.Rows[i].Cells[12].text
它将返回一个值,假设它存在。要使它更简单,只需像这样使用它
TextBox txt_field = (TextBox)GridView2.Rows[i].Cells[12].FindControl("txt_Comment");
string txt = txt_field.text; //store it's text in string
并更改命令
代替txt_字段
只需编写txt或txt.ToString()代码>
但是System.Web.UI.Control不包含文本方法,我不能使用它
cmd.CommandText = "Update DetailCosts set private='" + private1 + "' Komentar='" + txt + "' where recordid=" + recordid;
//
cmd.Parameters.AddWithValue("@private1", SqlDbType.Bit).Value = private1;
cmd.Parameters.AddWithValue("@recordid", SqlDbType.Int).Value = recordid.ToString();
cmd.Parameters.AddWithValue("@Komentar", SqlDbType.NChar).Value = txt.ToString();