将数据从C1FlexGrid复制到C1FlexGrid

时间:2014-08-04 20:02:49

标签: vb.net componentone

我正在使用C1FlexGrid,我不完全确定该版本。我试图将在FlexGridA中选择的行复制到FlexGridB,到目前为止我无法在线找到任何帮助,并且到目前为止我尝试使用的所有功能(例如添加)都不起作用

我该如何做到这一点?

使用C1FlexGrids,因此,如果答案是针对常规MSFlexGrid,则无法使用。我已经尝试过为这些解决方案使用一些解决方案,但它们也不起作用。

编辑:

我现在在表之间复制信息,但它正在复制表过滤后的全部内容,而不仅仅是所选行。

有两个flexgrids。在form1上是fgResults,在form2上是fgDelete。我想将选定的行从fgResults复制到fgDelete,以便用户可以在盲目点击并删除他们不想要的内容之前查看他们选择从数据库中删除的内容。

以下是我要复制数据的内容:

            AddFilterRow(MultiDelete.fgDelete)
            Dim MS As System.IO.MemoryStream = New System.IO.MemoryStream
            fgResults.WriteXml(MS)
            MS.Position = 0
            MultiDelete.fgDelete.ReadXml(MS)

问题是,它再次添​​加了已过滤的所有内容,而不仅仅是所选行。

2 个答案:

答案 0 :(得分:0)

因此,经过几个小时的挖掘,我发现了一种解决方法,因为似乎没有直接的方法将一行从C1FlexGrid复制到另一行。

            Dim DT As New DataTable

            For c = fgResults.Cols.Fixed To fgResults.Cols.Count - 1
                DT.Columns.Add(fgResults.Cols(c).Name, fgResults.Cols(c).DataType)
            Next

            For r = fgResults.Rows.Fixed To fgResults.Rows.Count - 1
                If fgResults.Rows(r).Selected Then
                    Dim row As DataRow = DT.NewRow()
                    For c = fgResults.Cols.Fixed To fgResults.Cols.Count - 1
                        If fgResults(r, c) Is Nothing Then
                            If fgResults.Cols(c).DataType.FullName = "System.DateTime" Then
                                row.Item(c - fgResults.Cols.Fixed) = Date.MinValue
                            ElseIf fgResults.Cols(c).DataType.FullName = "System.Double" Then
                                row.Item(c - fgResults.Cols.Fixed) = 0
                            Else
                                row.Item(c - fgResults.Cols.Fixed) = ""
                            End If

                        Else
                            row.Item(c - fgResults.Cols.Fixed) = fgResults(r, c)
                        End If
                    Next
                    DT.Rows.Add(row)
                End If
            Next

我在这里做的是创建一个新的数据表,向其中添加所选的所有行,然后用创建的数据表填充第二个网格。如果有人有更直接的方式来做这件事,我会全力以赴,但这对我现在想要完成的事情起作用。

答案 1 :(得分:0)

我有将c1个flex网格单元格复制为excel格式的代码

Dim fCol as integer
Dim fRow as integer
 Private Sub Flex_EnterCell(ByVal sender As Object, ByVal e As System.EventArgs) Handles Flex.EnterCell

        fRow = Flex.RowSel
        fCol = Flex.ColSel
    End Sub


Private Sub Copy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Copy.Click
        Dim lRow As Integer, nRow As Integer
        Dim lCol As Integer, nCol As Integer
        Dim nText As String

        lRow = Flex.RowSel
        lCol = Flex.ColSel
        For nRow = fRow To lRow
            For nCol = fCol To lCol
                nText = nText & IIf(IsDBNull(Flex.Item(nRow, nCol)), Convert.ToChar(Keys.Tab), Flex.Item(nRow, nCol)) & Convert.ToChar(Keys.Tab)
            Next
            nText = nText & vbCrLf
        Next
        Clipboard.SetText(nText)

    End Sub