SpreeadJS 9 支持汉字和中文本地化界面(SpreadJS 9 新功能:汉化和样式),极大的方便了国内用户,本文在介绍如何根据本地化语言加载Spread模板的同时简单介绍如何使用SpreadJS设计器快速绑定数据。

以SpreadJS Demo中的学生日历为模板实现。

实现步骤:

1. 下载并修改模板文件。

    在学生日历实例页面下载Demo,打开studentcalendar_json.txt 删除文档前后 “ [”“ ]”符号,使内容从array变为object,并重命名为studentcalendar.en-us.ssjson。

2. 使用SpreadJS Designer 打开studentcalendar.en-us.ssjson,为模板增加单元格数据绑定,保存模板。

    为模板添加单元格绑定可参考 Using the SpreadJS Designer Template with Cell Binding

template.en

3. 另存为studentcalendar.zh-cn.ssjson,汉化模板内容,保存。

template.zh

4. 在MVC项目中添加获取模板代码,将之前创建好的模板文件放在项目下templates文件夹中。

public JsonResult GetTemplateJson(string key, string culture = "zh-cn")
        {
            if (string.IsNullOrWhiteSpace(key))
            {
                return Json("");
            }
            string name = HttpContext.Server.MapPath(@"~\templates\{0}.{1}.ssjson");
            name = string.Format(name, key, culture);
            if (System.IO.File.Exists(name))
            {
                string context = System.IO.File.ReadAllText(name);
                return Json(context, JsonRequestBehavior.AllowGet);
            }
            return Json("");
        }

 

5. 页面THML代码

<div class="row">
    <div class="col-md-12" style="margin-top:20px;">
        <div id='ss' style='width:100%; height:600px;'></div>
    </div>
</div>
<div class="form-inline" style="margin-top:10px;">
        <label class="control-label" for="cultureName">Culture:</label>
        <select class="form-control" id="cultureName">
            <option value="en-us">English</option>
            <option value="zh-cn">Chinese</option>
        </select>
</div>

 

6. JS代码

        var spread = null;
        var spreadNS = GcSpread.Sheets
        $(function () {
            spread = new spreadNS.Spread($('#ss')[0]);
            //根据Spread默认语言加载数据
            var culture = GcSpread.Sheets.Culture();
            $("#cultureName").val(culture);
            loadTemplate(culture);
            $("#cultureName").change(function () {
                changeCulture($(this).val());
            });
        });
        function changeCulture(culture) {
            GcSpread.Sheets.Culture(culture);
            loadTemplate(culture);
        }
        function loadTemplate(culture) {
            //根据不同语言加载数据
            $.getJSON("/Home/GetTemplateJson?key=studentcalendar&culture=" + culture, function (template) {
                if (template) {
                    if (typeof (template) !== "object") {
                        template = JSON.parse(template);
                    }
                    //导入模板
                    spread.fromJSON(template);
                    //数据可以从服务端异步获取
                    var bindingData = {
                        "zh-cn": { assignment: { day: 1, detail: "完成作业" } },
                        "en-us": { assignment: { day: 1, detail: "Finish Job" } }
                    }
                    var dataSource = new spreadNS.CellBindingSource(bindingData[culture]);
                    var sheet = spread.sheets[0];
                    //为sheet 1 绑定数据
                    sheet.setDataSource(dataSource);
                }
            });
        }

 

 

运行项目,切换下拉菜单语言即可切换SpreadJS 语言、模板语言、以及绑定数据语言。

示例下载: