在ASP.Net VB.Net中编辑数据网格的行

时间:2010-01-12 22:26:34

标签: asp.net vb.net datagrid

我正在处理一段代码,它使用较旧的DataGrid格式,允许用户在表格中输入信息。它已经有一个添加和删除按钮。目前,用户将信息输入页脚中的3个文本框,其他行使用标签显示信息。

基本上我想要做的是取用户点击编辑按钮的行,然后将文本从那里移到页脚(删除它显示的行),这样用户就可以进行更改然后再次单击“添加”按钮。目前我已经尝试使用FindControls来查找文本框并以这种方式设置文本,但它不喜欢它。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

你是如何使用FindControl的?发布代码总是有帮助的;)

您应该能够在页脚行上执行FindControl()并获得没有问题的文本框。

GridViewRow row = GridView1.FooterRow;
TextBox txt1 = ((TextBox)row.FindControl,"TextBox1"));

答案 1 :(得分:0)

基本上我改变了原先的计划。不是将文本从行移动到页脚文本框并删除行而是使用EditCommandColumn创建一个类似的链接按钮

<asp:EditCommandColumn ButtonType="LinkButton" ItemStyle-ForeColor="Blue" EditText='[edit]' UpdateText='[update]' CancelText='[cancel]'></asp:EditCommandColumn>

我还必须将EditItemTemplate添加到每个列,每个列都有一个文本框,并将数据绑定到文本框,方法与绑定到ItemTemplates中的标签的方式相同。

然后使用ItemCommand事件处理程序,我添加了一些代码,将EditItemIndex设置为正在编辑的行。

Private Sub GoodsList_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgdGoods.ItemCommand

    Select Case e.CommandName


        Case "Edit"

            dgdGoods.EditItemIndex = e.Item.ItemIndex

        Case "Cancel"

            dgdGoods.EditItemIndex = -1

        Case "Update"

            dgdGoods.EditItemIndex = -1
            'Update details here

然后,在此结束时将数据重新绑定到datagrid。使用EditCommandColumn,它将自动从显示“编辑”按钮更改为显示正在编辑的行上的“更新”和“取消”按钮。

答案 2 :(得分:0)

需要澄清一些事项 - 您是指旧的.NET“DataGrid”控件还是较新的“GridView”控件。此外,这是一个web或winforms应用程序吗?

我的建议 -

您是否曾尝试通过处理GridView1_RowEditing事件以编程方式添加和设置TextBox控件?

要删除已编辑的行 - 将其从数据源中删除并重新绑定网格。

list.Remove(itemToRemove);
GridView1.DataSource = list;
GridView1.DataBind();

然后,从itemToRemove获取数据并使用它以编程方式在页脚中创建和设置文本框。

如果您的数据网格的第三列被称为“名称”并包含名称数据,您将创建并设置第三列的页脚行TextBox值,如下所示 -

GridView1.FooterRow.Cells[2].Controls.Add(new TextBox { ID = "tbName", Text = item.Name });