Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Gridview中的文本框返回null或';System.Web.UI.WebControls.TextBox';_C#_Asp.net_Visual Studio_Gridview_Textbox - Fatal编程技术网

C# Gridview中的文本框返回null或';System.Web.UI.WebControls.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++)

我在从文本框检索数据时遇到问题。文本框位于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++)
    {
        //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();