如何在MVC中使用Slickgrid Formatters

时间:2013-06-30 20:02:50

标签: asp.net-mvc slickgrid jscript

我正在开发第一个Slickgrid MVC应用程序,其中列定义和格式将存储在数据库中。我可以非常愉快地检索列列表并填充它们,直到我遇到日期格式化问题。没问题 - 对于每个日期(或时间)列,我可以在数据库中存储格式化程序名称,这样也可以检索。我正在使用以下代码,该代码正常工作:

CLOP_ViewColumnsDataContext columnDB = new CLOP_ViewColumnsDataContext();
var results = from u in columnDB.CLOP_VIEW_COLUMNs
              select u;

List<dynColumns> newColumns = new List<dynColumns>();

foreach(CLOP_VIEW_COLUMN column in results)
{

    newColumns.Add(new dynColumns
    {
        id = column.COLUMN_NUMBER.ToString(),
        name = column.HEADING.Trim(),
        field = column.VIEW_FIELD.Trim(),
        width = column.WIDTH,
        formatter = column.FORMATTER.Trim()

    }); 
}

var gridColumns = new JavaScriptSerializer().Serialize(newColumns);

除了fomatter之外,这一切都很好。变量gridColumns的一个示例是:

    [{"id":"1","name":"Date","field":"SCHEDULED_DATE","width":100,"formatter":"Slick.Formatters.Date"},{"id":"2","name":"Carrier","field":"CARRIER","width":50,"formatter":null}]

哪个看起来不太糟糕,但应用程序失败并出现错误Microsoft JScript运行时错误:slick.grid.js脚本中预期的函数

任何帮助都非常感激 - 即使有更好的方法可以做到这一点!

1 个答案:

答案 0 :(得分:0)

您正在为formatter属性分配一个字符串,预计它将是函数。

尝试:

window["Slick"]["Formatters"]["Date"];

但我真的认为你应该重新考虑这样做,而是将你的值存储在数据库中,并通过代码定义你的列。

维护起来会更容易,并且不易出错。

如果您决定使用自定义编辑器和格式化程序,稍后重命名该怎么办? 然后您的代码将中断,或者您将不得不重命名数据库中的所有条目以及代码。