2015-07-10 113 views
1

简单的问题!在DataSet中隐藏的DataColumn单元格中添加数据

我有数据集填充三个数据表。不知何故,我需要在GridView中隐藏一些列。现在有两种方法可以隐藏列:

  1. 使用DataColumn MappingType属性隐藏来自DataTable的列。

myDataSet.Tables("Managers").Columns("Id").ColumnMapping = MappingType.Hidden

直接从
  • 隐藏柱的GridView

    GridView1.Columns("Id").Visible = False

  • OR

    GridView1.Columns("Id").VisibleIndex = -1 
    

    现在保持列隐藏,我需要提供的功能是“添加新行”。列隐藏时,如何在新行中添加数据?

    更确切地说,我如何将数据放入隐藏的列单元格中?

    假设我的Id列不是自动递增

    注意:我在VB.NET桌面环境中工作。

    +0

    谁要在隐藏字段中添加数据,您还是最终用户? –

    +0

    您可以将数据添加到隐藏字段,就像它们可见(以编程方式)一样。如果你对如何隐藏用户输入内容感到困惑,那么我会建议在datagridview旁边添加一个文本框和按钮,以便将信息放入选定行的隐藏列中,或者对此产生影响 – AaronTheRabbit

    回答

    0

    我的假设是你正在使用datagridview绑定源?将数据集添加到项目的数据源(菜单:数据 - >添加新数据源)。然后,菜单:数据 - >显示数据源。右键单击表格并选择将其显示为数据网格。将表格拖到表单上。在网格上右键单击编辑列。删除不需要的列,然后格式化剩下的列。设计者将自动为你创建一个绑定源。在表单代码中,选择左上角下拉列表中的Bindsource,然后选择右上方的“AddingNew”。新活动将为您创建。在活动内部,添加以下代码:

    Private Sub YourTableBindingSource_AddingNew(ByVal sender As Object, _ 
                   ByVal e As system.ComponentModel.AddingNewEventArgs) _ 
         Handles bsyourBinding.AddingNew 
    
         Dim bs As BindingSource = CType(sender, BindingSource) 
         Dim view As System.Data.DataView = CType(bs.List, System.Data.DataView) 
         Dim _row As System.Data.DataRowView 
    
         _row = view.AddNew 
         dim newRow as yourDataSet.yourTableRow = DirectCast(_row.Row, yourDataSet.yourTableRow) 
         With newRow 
          .BeginEdit() 
          NextIDNumber += 1 
          .MyIDField = NextIDNumber 
          .MyDataField1 = Today.AddDays(1).Date 
          .MyDataField2 = someData 
          .MyDataField3 = someOtherData 
          .EndEdit() 
         End With 
         bs.MoveLast() 
         e.NewObject = _row 
        End Sub 
    

    当您添加属于父表的记录时,此绑定源AddingNew事件特别有用。当表使用绑定源绑定到网格时,对绑定源所做的所有更改都会自动反映到网格中。您不必在网格中显示ID号。如果用户点击网格上的新行,该绑定源事件将被自动触发。

    我还将包含一些网格事件的代码CellParsing,CellValidating,CellValidated(用来清除错误信息并可能做一些数学运算)和RowValidating。在行验证中,您可以检查所有单元格是否有值并且是有效的。如果用户留有空白行,则可以调用.CancelEdit删除空行并防止将其存储到数据库中。

    相关问题