2013-03-26 78 views
1

我想读取从DevExpress的XtrapivotGrid中获取的Stream。我可以将它保存在计算机中,但我想要的是将其保存在我的表中的一个名为dataset1的数据集中。 现在我有那个代码允许保存目录Temp :.将fileStream的内容放入数据集

Using FS As New IO.FileStream("D:\Temp\qqc.layout", IO.FileMode.Create) 
    PivotGridControl1.SaveLayoutToStream(FS) 
End Using 

Dim read As New System.IO.FileStream("D:\Temp\qqc.layout", IO.FileMode.Open, IO.FileAccess.Read) 
DataSet1.LayoutMainRapport.ReadXml(read) 
DataSet1.AcceptChanges() 
read.Close() 

表LayoutMainRapport有3列:

  • ID(INT)
  • 名称(为nvarchar(50))
  • 内容(XML)。

流的输出是xml。

在此先感谢!

回答

1

我只需保存xml的名称并将其保存到我的数据集后。

Dim saveDialog As SaveLayout = New SaveLayout 
    If saveDialog.ShowDialog() = Windows.Forms.DialogResult.OK Then 
     Dim read As New IO.MemoryStream 
     PivotGridControl1.SaveLayoutToStream(read) 
     read.Position = 0 
     Dim lecteur As New IO.StreamReader(read) 
     Dim ligne As DataRow = DataSet1.LayoutMainRapport.NewRow() 

     ligne("Nom") = saveDialog.txtNom.Text 
     ligne("Contenu") = lecteur.ReadToEnd() 
     DataSet1.LayoutMainRapport.Rows.Add(ligne) 
     LayoutMainRapportTableAdapter.Update(DataSet1) 
    End If 
1

我相信你应该你保存的布局转换成字符串,然后保存该字符串数据库(当然你可以加载这个布局从数据库字符串值回):

Private Function SaveLayoutToString(ByVal dxControl As DevExpressControl) As String 
    Using ms As MemoryStream = New MemoryStream() 
     dxControl.SaveLayoutToStream(ms) 
     Return Convert.ToBase64String(ms.ToArray()) 
    End Using 
End Function 
Private Sub RestoreLayoutFromString(ByVal dxControl As DevExpressControl, ByVal layout As String) 
    If String.IsNullOrEmpty(layout) Then 
     Return 
    End If 
    Using ms As MemoryStream = New MemoryStream(Convert.FromBase64String(layout)) 
     dxControl.RestoreLayoutFromStream(ms) 
    End Using 
End Sub 

这里DevExpressControl dxControl是DevExpress的控制支持保存和加载布局(XtraPivotGrid,XtraGrid,XtraLayoutControl等)