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
3. 另存为studentcalendar.zh-cn.ssjson,汉化模板内容,保存。
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 语言、模板语言、以及绑定数据语言。
示例下载: