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

Javascript 尝试从C#(ASP.NET gridview)中的文本框获取文本值时出错,javascript,c#,mysql,asp.net,gridview,Javascript,C#,Mysql,Asp.net,Gridview,当我试图从一个文本框中获取一个值时,我不断得到这个错误(见图),我不知道如何修复它。我正在使用以下代码: protected void Button3_Click(object sender, EventArgs e) { _controller = new Controller(); //Variablen string afspraak =""; foreach (GridViewRow row in GridVie

当我试图从一个文本框中获取一个值时,我不断得到这个错误(见图),我不知道如何修复它。我正在使用以下代码:

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;               
        }
我正在使用javascript与ASP.NET相结合,代码如下所示; 有关js的更多信息:

JAVASCRIPT(点击后将标签更改为文本框)

$(函数(){
//使用类“editable”遍历所有标签。
$(“.editable”)。每个(函数(){
//参考标签。
var标签=$(此);
//在标签旁边添加一个文本框。
标签。在(“”)之后;
//引用文本框。
var textbox=$(this.next();
//设置文本框的name属性。
var id=this.id.split(“”“)[this.id.split(“”“).length-1];
//textbox[0]。name=id.replace(“Label”,“textbox”);//这是它的id
文本框[0].name=“TxteditTable”;
//将标签的值指定给TextBox。
val(label.html());
//单击标签时,隐藏标签并显示文本框。
标签。单击(函数(){
$(this.hide();
$(this.next().show();
});
//当文本框失去焦点时,隐藏文本框并显示标签。
textbox.focusout(函数(){
$(this.hide();
$(this.prev().html($(this.val());
$(this.prev().show();
});
});
}))

ASP.NET

  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" Width="1000px" HorizontalAlign="Center" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <Columns>
            <asp:TemplateField HeaderText="IDAfspraken">
                <ItemTemplate>
                    <asp:Label ID="Label4" runat="server" Text='<%# Eval("IDAfspraken") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
          </asp:GridView>

尝试取消引用
.Text
属性时,
((TextBox)row.FindControl(“TxteditTable”)
的值似乎返回null或未定义的值,因此出现NullPointerException

与JavaScript相比,您的用例似乎更适合于您的C代码。我的最佳猜测是,您应该尝试向控件添加
id
属性,而不是名称。我可能错了,但根据规格判断,您应该通过ID而不是名称访问控件

编辑:
如果您的输入位于表单内部,请尝试使用以下语法通过输入的name属性访问它:
Request.form[“txtName”]
与其尝试执行
FindControl

不如简单地为网格定义一个编辑模板?我认为在这里混合使用asp.net和手工构建的客户端代码会使事情变得复杂。例如,见。
  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" Width="1000px" HorizontalAlign="Center" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        <Columns>
            <asp:TemplateField HeaderText="IDAfspraken">
                <ItemTemplate>
                    <asp:Label ID="Label4" runat="server" Text='<%# Eval("IDAfspraken") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
          </asp:GridView>