2008-11-04 95 views

回答

7

我不认为有什么办法将“新行”行移动到数据网格的顶部。

但是,如果您将最上面的一行留为空白,并且在填入数据时将相应的行向下移动会怎样?换句话说,创建自己的“新行”行,这只是网格中的第一行,并在编辑结束时添加上面的新空白行。

Dim myrow = existingDataTable.NewRow 

    existingDataTable.Rows.Add(myrow) 

    adp.Fill(existingDataTable) 
    With DataGridView1 
     .DataSource =existingDataTable 
    End With  
+0

嗯,可以正常工作。我不确定它如何与数据绑定等工作,但我将不得不尝试一下。 – 2008-11-05 14:03:57

1

您可以为小于所有现有行的新行的键分配一个临时值吗?然后通过该键排序DataView并将视图绑定到您的网格。

我的团队使用负数作为行ID,直到该行被插入到数据库中。我不记得我们在顶部显示的新排,但我们也没有这样的要求。

1

如果一切都失败了哈克的方式将是把单独一条线的DataGridView现有一个以上,克隆其列,线构成该行提交事件,将数据添加到下一个:)

4

如果您不使用绑定控件,dgvItems.Rows.Insert()将允许您指定行插入的位置。

如果使用绑定datagridview的,没有一种活性,新行添加到数据源中所期望的位置:

BoundTable.Rows.InsertAt(BoundTable.Rows.NewRow(),RowLocation) ;

我发现了一个有趣的关系,如果在当前行上有编辑并且行尚未提交给数据源(即您刚开始输入数据),则似乎有必要将活动单元格移动到另一行在插入行之前提交更改。

+0

@Jeff Corder在我完全阅读您的评论之前意外发布,但会对任何模糊您描述的人保持警惕。然而,在我看来,如果你不想使用唯一的密钥标识符,这是最有效的方法。 – 2011-06-11 07:32:06

1

您是否在使用RowDataBound事件?如果是这样,你可以检查你是否绑定了列标题行,然后添加适当的代码来插入一行。

这样,当你的内容行被绑定时,对涉及的项目索引没有任何混淆,尽管我会推荐使用一些DataKeys或以防万一。另外,使用RowDatabound事件可以让用户在GridView的不同行中寻址时使用“插入行”。

-2

我假设你的意思是说,当你想添加一个新行时,你希望该行实际上被插入到表的顶部,而不是默认的表的底部?那么如果是这样的话,你不必处理排序或关键值;简单地做这样用插入法:

'创建一个新的行

昏暗tmpRow =新的DataGridViewRow

' 调整行以某种方式

tmpRow。高度= _cellRectSize

“在顶部的行添加到DataGridView中(即dgvEditor)(索引= 0)

Me.dgvEditor.Rows.Insert(0,tmpRow)

作品像我的魅力,希望它可以帮助别人!

1

正如While-E所述,使用Insert而不是Add。这样您可以指定要添加新记录的位置。要在网格顶部添加新记录,只需使用Insert(0)即可。

DataGridView1.Rows.Insert(0)这将增加在顶部的新纪录,始终

DataGridView1.Rows(0).Cells(n).Value = "abc"这将设置值以n列

相关问题