我正在使用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)
问题是,它再次添加了已过滤的所有内容,而不仅仅是所选行。
答案 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