如何操控DevExpress的 SpreadSheet 控件 并与 XAF 结合应用

时间:2021-11-28 19:24:47

DevExpress的XAF 框架通常使用 GridControl 控件来操作数据库表中的数据,但导入导出、非结构化数据的管理可以使用SpreadSheet 控件。

SpreadSheet 控件模拟微软的 EXCEL 电子表格,对手工干预比较多的数据是一种很好的方式。下面总结一下如何组合应用:

 

一、利用 SpreadSheet 控件 来导入 EXCEL 格式的数据。

      通常的做法是通过 EXCEL 的接口,读取 EXCEL 文件,获取数据,然后写入数据库记录。本人采用一种更直观的方式。

      1)在 XAF 中创建一个 用户控件,引用 SpreadSheet  提供的 SpreadsheetControl 控件;

      2)加入 SpreadsheetControl   提供的 操作动作控件 (比如打开文件、保存等)。

      3)在模型设计器中创建一个 XAF 的 DashboardView,加入一个 ControlDetailItem,并将 其ControlTypeName 属性的值设置为:上述创建的用户控件。然后,增加其它设置。。。

      4)在需要导入EXCEL 的对象界面,创建一个 ViewController (可以限用于 List 界面),增加一个PopupWindowShowAction  。

            A\ 自行定义 CustomizePopupWindowParams 事件,用方法 CreatDashbardView  创建 一个  DashbardView,用于弹出。

                 弹出窗口中,包含了 EXCEL 样式的 SpreadsheetControl 控件,可以打开 XLS,XLSX 等格式的文件。

            B\ XXXAction_Excute 事件,用于数据的导入。

 

二、 利用 SpreadSheet  控件来管理 非结构化数据。

       1)自定义控件与 VIEW 的过程同上(一);

       2)但数据保存于数据库记录的一个字段中,使用于XAF 的附件扩展;

       3)从此字段加载数据,使用控件的方法:SpreadsheetControl.LoadDocument ,有两个参考:

            bool LoadDocument(Stream stream, DocumentFormat format)     bool LoadDocument(Byte[] buffer)   后者自动探测文档格式。

            bool LoadDocument(Byte[] buffer, DocumentFormat format)          bool LoadDocument(Stream stream)  后者自动探测文档格式。

      4) 保存文档的方法 参考此文   How to: Save a Document to a File  ,下列方法可以使用。 

             void SaveDocument(Stream stream, DocumentFormat format)  

             Byte[] SaveDocument(DocumentFormat format)   

      5)  SpreadsheetControl 如何与数据库交互, 参考 此文:  How to: Store a Workbook in the Database