7

我试图让 DataGridView 将“插入新行”行呈现为网格中的第一行而不是最后一行。我该怎么做,在控制中甚至可能吗?

4

7 回答 7

7

我认为没有任何方法可以将“新行”行移动到数据网格的顶部。

但是,如果您将第一行留空并在填充数据时将行向下移动怎么办?换句话说,创建自己的“新行”行,这只是网格中的第一行,并在编辑结束时在上方添加新的空白行。

   Dim myrow = existingDataTable.NewRow

    existingDataTable.Rows.Add(myrow)

    adp.Fill(existingDataTable)
    With DataGridView1
        .DataSource =existingDataTable
    End With    
于 2008-11-05T00:40:04.103 回答
4

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

如果您使用的是绑定的 datagridview,但没有激活排序,请将新行添加到所需位置的数据源:

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

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

于 2008-11-14T22:42:21.757 回答
1

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

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

于 2008-11-06T01:53:31.193 回答
1

如果所有其他方法都失败了,那么骇人听闻的方法是将单独的一行 DataGridView 放在现有的上面,克隆它的列,然后连接行提交事件以将数据添加到较低的 :)

于 2008-11-08T23:25:58.653 回答
1

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

这样,当您的内容行被绑定时,就不会与所涉及的项目索引混淆,尽管我建议使用一些 DataKeys 或其他东西以防万一。此外,当用户分页到 GridView 中的不同行块时,使用 RowDatabound 事件将允许您有一个可用的“插入行”。

于 2008-11-14T22:48:05.507 回答
1

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

DataGridView1.Rows.Insert(0)这将始终在顶部添加一条新记录

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

于 2011-10-27T15:34:00.120 回答
-2

我假设你的意思是当你想添加一个新行时,你希望该行实际插入到表的顶部,而不是像默认的那样插入到表的底部?好吧,如果是这样,您就不必处理排序或键值;只需使用 Insert 方法即可:

'创建一个新行

暗淡 tmpRow = 新 DataGridViewRow

'以某种方式调整行

tmpRow.Height = _cellRectSize

'将行添加到顶部的DataGridView(即dgvEditor)(索引= 0)

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

对我来说就像一个魅力,希望它可以帮助别人!

于 2011-06-11T07:28:25.313 回答