我使用的是C1FlexGrid,哪个版本我不太确定。我正在尝试将在FlexGridA中选择的行复制到FlexGridB,到目前为止,我无法在网上找到任何要帮助的东西,而且到目前为止我尝试使用的所有功能(如add)都无法工作。
我怎样才能做到这一点?
我必须使用C1FlexGrids,所以如果答案是普通的MSFlexGrid,它就不能工作。我已经尝试过用一些解决方案来解决这些问题,但它们也不起作用。
编辑:
我现在可以在表之间复制信息,但是它是在对表进行过滤之后复制表的全部内容,而不仅仅是所选的行。
有两个柔性网格。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)问题同样是,它添加了所有过滤过的内容,而不仅仅是选定的行。
发布于 2014-08-05 15:54:14
因此,经过几个小时的挖掘,我找到了一个解决办法,因为似乎没有一种直接的方法将一行从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我在这里要做的是创建一个新的datatable,将选中的所有行添加到其中,然后用创建的datatable填充第二个网格。如果有人有一种更直接的方法来做这件事,我会全神贯注地听着,但这对于我现在想要完成的事情来说是可行的。
发布于 2018-07-03 12:54:39
我有将c1弹性网格单元格复制为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 Subhttps://stackoverflow.com/questions/25126623
复制相似问题