从行中获取ID以验证更新

时间:2014-07-24 19:19:17

标签: c# asp.net sql-server

我尝试更新主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,因为我尝试从文本框和标签中拉出参数(既没有工作),也不是一个可编辑的字段。

1 个答案:

答案 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的更新。