尝试从C#中的文本框中获取文本值时出错(ASP.NET gridview)

时间:2017-04-25 21:22:09

标签: javascript c# mysql asp.net gridview

当我试图从文本框中获取值时,我不断收到此错误(请参阅图片),我不知道如何修复它。我正在使用以下代码:

widget

我正在使用javascript结合ASP.NET,代码看起来像这样; 有关js的更多信息:EDITABLE LABEL

JAVASCRIPT (它会在点击时将标签更改为文本框)

protected void Button3_Click(object sender, EventArgs e)
    {
        _controller = new Controller();

        //Variablen
        string afspraak ="";

        foreach (GridViewRow row in GridView1.Rows)
        {
            afspraak = ((TextBox)row.FindControl("txtEditTabel")).Text;               
        }

});

ASP.NET

$(function () {
//Loop through all Labels with class 'editable'.
$(".editable").each(function () {
    //Reference the Label.
    var label = $(this);

    //Add a TextBox next to the Label.
    label.after("<input type = 'text' style = 'display:none' />");

    //Reference the TextBox.
    var textbox = $(this).next();

    //Set the name attribute of the TextBox.
    var id = this.id.split('_')[this.id.split('_').length - 1];
    //textbox[0].name = id.replace("Label","Textbox"); //tis dit hier van die id's
    textbox[0].name = "txtEditTabel";
    //Assign the value of Label to TextBox.
    textbox.val(label.html());

    //When Label is clicked, hide Label and show TextBox.
    label.click(function () {
        $(this).hide();
        $(this).next().show();
    });

    //When focus is lost from TextBox, hide TextBox and show Label.
    textbox.focusout(function () {
        $(this).hide();
        $(this).prev().html($(this).val());
        $(this).prev().show();
    });
});

我100%确定我的SQL代码是正确的。我错过了什么吗?我非常感谢你的帮助!

错误: Error image

1 个答案:

答案 0 :(得分:0)

((TextBox)row.FindControl("txtEditTabel"))的值似乎在尝试取消引用.Text属性时返回null或未定义的值,因此返回NullPointerException。

您的用例似乎非常特定于您的C#代码,而不是JavaScript。我最好的猜测是,您应该尝试向控件添加id属性而不是名称。我可能错了,但根据规范found here on FindControl method判断,您应该通过ID而不是名称来访问控件。

编辑: 如果您的输入位于表单内,请尝试使用输入的name属性通过以下语法访问它:Request.Form["txtName"];而不是尝试执行FindControl