首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据从C1FlexGrid复制到C1FlexGrid

将数据从C1FlexGrid复制到C1FlexGrid
EN

Stack Overflow用户
提问于 2014-08-04 20:02:49
回答 2查看 2.5K关注 0票数 0

我使用的是C1FlexGrid,哪个版本我不太确定。我正在尝试将在FlexGridA中选择的行复制到FlexGridB,到目前为止,我无法在网上找到任何要帮助的东西,而且到目前为止我尝试使用的所有功能(如add)都无法工作。

我怎样才能做到这一点?

我必须使用C1FlexGrids,所以如果答案是普通的MSFlexGrid,它就不能工作。我已经尝试过用一些解决方案来解决这些问题,但它们也不起作用。

编辑:

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

有两个柔性网格。form1是fgResults,form2是fgDelete。我希望将选定的行从fgResults复制到fgDelete,这样用户就可以在盲目地单击和删除他们不想要的内容之前,从数据库中看到要删除的内容。

以下是我要复制的数据:

代码语言:javascript
复制
            AddFilterRow(MultiDelete.fgDelete)
            Dim MS As System.IO.MemoryStream = New System.IO.MemoryStream
            fgResults.WriteXml(MS)
            MS.Position = 0
            MultiDelete.fgDelete.ReadXml(MS)

问题同样是,它添加了所有过滤过的内容,而不仅仅是选定的行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-05 15:54:14

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

代码语言:javascript
复制
            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

我在这里要做的是创建一个新的datatable,将选中的所有行添加到其中,然后用创建的datatable填充第二个网格。如果有人有一种更直接的方法来做这件事,我会全神贯注地听着,但这对于我现在想要完成的事情来说是可行的。

票数 0
EN

Stack Overflow用户

发布于 2018-07-03 12:54:39

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

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25126623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档