1. 目前错误原因是fromJSON是异步的,所以把数据绑定的代码位置调整一下就好了。参见下面代码
- <script type='text/javascript' charset='utf-8'>
- $(document).ready(function () {
- var spread = new GcSpread.Sheets.Spread($("#ss").get(0),{sheetCount:1});
- $.ajax({
- url: "bjd1.ssjson",
- datatype: "json",
- success: function (data) {
- //here to load ssjson file.
- spread.isPaintSuspended(true);
- spread.fromJSON(JSON.parse(data));
- spread.isPaintSuspended(false);
-
- var sheet = spread.getActiveSheet();
- var person = { F_CUSTOMER: "Wang feng", F_PROJECT: "25", F_PAYMENTTERMS: "aaaaaaaa" };
- var source = new GcSpread.Sheets.CellBindingSource(person);
- sheet.setBindingPath(6, 2, "F_CUSTOMER");
- sheet.setBindingPath(7, 2, "F_PROJECT");
- sheet.setBindingPath(8, 2, "F_PAYMENTTERMS");
- sheet.setDataSource(source);
- },
- error: function (ex) {
- alert('Exception:' + ex);
- }
- });
- });
- </script>
复制代码
2. 关于回写Sever端并保存到数据库,这看你用什么样的Server端解决方案了,SpreadJS是纯前端控件,无法支持服务端操作。
根据我们在ASP.NET技术的经验来看,你可以在前端放一个Hiden Field,然后将要回传的数据序列化成JSON串并保存在HidenField中。向Sever端Submit的时候就会将JSON串回传。
例如:
- var spread = GcSpread.Sheets.findControl(document.getElementById('ss'));
- var jsonStr = null;
- //export
- jsonStr = JSON.stringify(spread.toJSON());
复制代码
3. 关于保存成Excel文件。依赖于SpreadJS中的ExcelIO service。将这个ExcelIO Service安装到服务器上(必须是ASP.NET + IIS),然后只需要调用对应的Web Service就可以保存了。
文档有一篇在ASP.NET应用程序里导出到Excel的文章,很详尽。http://sphelp.grapecity.com/webh ... tml#excelioweb.html
核心代码如下:
前端
- <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TestExcelIO_WebForm.WebForm1" %>
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head runat="server">
- <title></title>
- <!--SpreadJS Widgets JavaScript-->
- <link href="css/gcspread.sheets.excel2013white.9.40.20153.0.css" rel="stylesheet" type="text/css" />
- <script src="scripts/gcspread.sheets.all.9.40.20153.0.min.js" type="text/javascript"></script>
- <script>
- function onLoad() {
- var spread = new GcSpread.Sheets.Spread(document.getElementById("ss"));
- var hiddenFile = document.getElementById("HiddenField1");
- if (hiddenFile && hiddenFile.value !== "") {
- spread.fromJSON(JSON.parse(hiddenFile.value));
- }
- }
- function exportExcel() {
- var spread = GcSpread.Sheets.findControl(document.getElementById("ss"));
- var hiddenFile2 = document.getElementById("HiddenField2");
- hiddenFile2.value = JSON.stringify(spread.toJSON());
- }
- </script>
- </head>
- <body onload="onLoad()">
- <form id="form1" runat="server">
- <asp:FileUpload ID="FileUpload1" runat="server" Height="24px" Width="223px" />
- <asp:Button ID="ImportBtn" runat="server" Text="Import Excel" OnClick="ImportBtn_Click" />
- <asp:Button ID="ExportBtn" runat="server" Text="Export Excel" OnClick="ExportBtn_Click" OnClientClick="exportExcel()"/>
- <div id="ss" style="width:100%;height:500px">
-
- </div>
- <asp:HiddenField ID="HiddenField1" runat="server" />
- <asp:HiddenField ID="HiddenField2" runat="server" />
- </form>
- </body>
- </html>
复制代码
Server端
- protected void ImportBtn_Click(object sender, EventArgs e)
- {
- if (this.FileUpload1.HasFile)
- {
- Importer excelImporter = new Importer();
- this.HiddenField1.Value = excelImporter.ImportExcel(this.FileUpload1.FileContent);
- }
- }
- protected void ExportBtn_Click(object sender, EventArgs e)
- {
- if (!string.IsNullOrEmpty(this.HiddenField2.Value))
- {
- Exporter excelExporter = new Exporter(this.HiddenField2.Value);
- excelExporter.SaveExcel(Response.OutputStream);
- Response.AddHeader("content-disposition", "attachment; filename= test.xlsx");
- Response.End();
- }
- }
复制代码 |