![](/img/trans.png)
[英]Can i add new row to datagrid view with a button click in ASP.Net written 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.