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>