【问题标题】:Editing row of a datagrid in ASP.Net VB.Net在 ASP.Net VB.Net 中编辑数据网格的行
【发布时间】:2011-01-04 09:45:00
【问题描述】:

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

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

【问题讨论】:

    标签: asp.net vb.net datagrid


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      您应该能够在页脚行上执行FindControl() 并毫无问题地获取文本框。

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

      【讨论】:

      • 感谢您的回复。不幸的是,我找不到直接访问数据网格行的方法(我无法创建 DataGridRow 对象),但我找到了一个解决方案,我将在下面发布。
      【解决方案3】:

      基本上我改变了我最初的计划。我没有将文本从行移动到页脚文本框并删除行,而是使用 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,它会自动从显示编辑按钮变为在正在编辑的行上显示更新和取消按钮。

      【讨论】:

        猜你喜欢
        • 2020-10-28
        • 2010-09-18
        • 2016-11-07
        • 1970-01-01
        • 2011-04-30
        • 2013-02-27
        • 1970-01-01
        • 2012-12-08
        • 1970-01-01
        相关资源
        最近更新 更多