繁体   English   中英

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

[英]Editing row of a datagrid in ASP.Net VB.Net

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

本质上,我要执行的操作是单击用户单击“编辑”按钮的行,然后将文本从此处移至页脚(删除显示该行的行),以便用户可以进行更改,然后单击“确定”。再次点击添加按钮。 目前,我尝试使用FindControls查找文本框并以这种方式设置文本,但它不喜欢它。 有任何想法吗?

您如何使用FindControl? 它总是有助于发布您的代码;)

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

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

本质上,我改变了最初的计划。 与其将文本从该行移至页脚文本框并删除该行,不如我使用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

然后,最后,将数据重新绑定到数据网格。 使用EditCommandColumn,它将自动从显示“编辑”按钮变为在正在编辑的行上显示“更新”和“取消”按钮。

需要澄清一些事情-您是指旧的.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 });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM