vb.net根据选择从绑定的datagridview获取行集合

时间:2015-02-27 08:52:25

标签: vb.net datagridview datarowcollection

我已经四处阅读并用Google搜索,但没有找到对我有帮助的小事。我想我有一些简单的逻辑错误。 好的,所以这就是我所拥有的: 绑定到数据表的DataGridView,其中填充了文件名(以及其他信息,主要是音频格式)。 好吧,现在我已经编写了一个子程序(VS2013并使用.Net 4.0)进行打印工作正常,我试图添加一个选项,只打印DataGridView中的选定行并且认为好了,然后我给出了打印例程DataGridView的整行或仅基于该选项的选定行。 这是我试过的: 在表单级别我将rowCollection定义为:     Dim rowCollection As DataGridViewRowCollection

然后,BeginPrint Sub有以下行来获取行:

'*** Get Rows to print
    rowCollection = New DataGridViewRowCollection(FileDataGridView)
    If My.Settings.PrintSelected And (FileDataGridView.SelectedRows.Count > 0) Then
        Dim row As New DataGridViewRow
        For r = FileDataGridView.SelectedRows.Count - 1 To 0 Step -1
            row = FileDataGridView.SelectedRows(r)
            rowCollection.Add(FileDataGridView.Rows(row.Index))
        Next
    Else
        rowCollection = FileDataGridView.Rows
    End If

我认为rowCollection就像是单行数组, 但显然这并没有完成这项工作。 如果我想打印所有行,这可以正常工作,但对于选定的行,我得到一个错误,没有元素可以添加到行集合,因为DataGridView是数据绑定。我认为rowCollection可以按单行填充,不仅是指向整个DataGridView的链接。我哪里错了? 我也尝试只将.SelectedRows作为集合,但后来我得到类型错误,因为DataGridView.Rows和DataGridView.SelectedRows没有相同的格式? 我想获得行或选定行的列表/集合/数组,然后我可以使用它们进行打印。 任何帮助将不胜感激

的问候,

基督教

1 个答案:

答案 0 :(得分:0)

肯定不是一个完美的解决方案,但能胜任:

    Dim rows As List(Of DataGridViewRow)
    Dim rowarray(DataGridView1.Rows.Count) As DataGridViewRow
    If DataGridView1.SelectedRows.Count > 0 Then
        DataGridView1.SelectedRows.CopyTo(rowarray, 0)
    Else
        DataGridView1.Rows.CopyTo(rowarray, 0)
    End If
    rows = rowarray.ToList
    rows.RemoveAll(Function(a As DataGridViewRow) a Is Nothing)

SelectedRowCollection和RowCollection之间存在差异,因为他们没有为那些2使用继承性,所以你需要作弊一点来处理两种方式