我正在处理一段代码,它使用较旧的DataGrid格式,允许用户在表格中输入信息。它已经有一个添加和删除按钮。目前,用户将信息输入页脚中的3个文本框,其他行使用标签显示信息。
基本上我想要做的是取用户点击编辑按钮的行,然后将文本从那里移到页脚(删除它显示的行),这样用户就可以进行更改然后再次单击“添加”按钮。目前我已经尝试使用FindControls来查找文本框并以这种方式设置文本,但它不喜欢它。有什么想法吗?
答案 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 });