我尝试更新主Customer表中1:N关系的表的行,因为每个ID可以有很多行,我需要添加一个唯一的ID' contact_id&# 39;
现在,当我尝试使用:
更新行时 cmd.CommandText = "UPDATE ContactInfo SET f_name = @val1, l_name = @val2, email = @val3, phone = @val4, title = @val5, notes = @val6 WHERE customer_id = @cid and where contact_id = @contID";
我收到一条错误,指出对象引用未设置为对象的实例。
除了我为contact_id设置的参数之外,我的所有参数都正常工作,我试图从TextBox contID中提取
这是我的参数:
TextBox contID = (TextBox)gvr.FindControl("tb_0");
这是我的实际参数:
cmd.Parameters.AddWithValue("@contID", contID.Text);
这是我的模板字段:
<asp:TemplateField HeaderText="Contact ID">
<ItemTemplate>
<asp:Label ID="lb_0" runat="server" Text='<%#Eval("contact_id") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="tb_0" runat="server" Text='<%#Bind("contact_id") %>' Enabled="false"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
为什么这不起作用?
编辑:我有一个edititemtemplate,因为我尝试从文本框和标签中拉出参数(既没有工作),也不是一个可编辑的字段。
答案 0 :(得分:0)
如果您不想使用foreach,这应该能够为您做到......
GridViewRow gvr = (GridViewRow)(sender as Control).Parent.Parent;
TextBox contID = (TextBox)gvr.FindControl("tb_0");
我在按钮点击内和SelectedIndexChanged中使用上述内容。
如果单个记录总是要在gridview中显示,你也可以使用foreach ..就像这样..
foreach (GridViewRow gvr in gvGridView1.Rows)
{
TextBox contID = (TextBox)gvr.FindControl("tb_0");
}
我必须使用这个foreach因为我的公司想要一个&#39; Excel&#39;比如他们的gridview的更新。