【问题标题】:Rendering Column Dynamically动态渲染列
【发布时间】:2014-04-02 21:44:16
【问题描述】:

我动态加载了 DataTable,所有列都来自数据库,采用 JSON 格式,需要 aoColumns。

我可以像这样渲染任何列:

"aoColumns": [
{
    "sName": "I_CPN",
    "fnRender": function (oObj) 
    {
        return a button
    }
}]

sName 是我的列名,这是静态的,我可以从 JSON 格式的 C# 代码动态获取aoColumns 的上述内容。我的问题是我无法将fnRender 放入 JSON 对象中。

如何获得fnRender 以便我可以将我的列呈现为按钮。

【问题讨论】:

    标签: c# jquery json asp.net-mvc-4 datatable


    【解决方案1】:

    JSON 格式不能携带函数对象。只是一些有限的纯数据类型集(参见http://www.json.org)以及可以序列化为字符串并反序列化的所有其他内容。

    因此,您可以将函数作为字符串传输,然后在 JavaScript 前端使用 eval 将其转回代码。参见例如JSON.parse vs. eval() 的示例如何使用eval。

    虽然这是可能的,但它以某种方式破坏了原始 JSON 作为简单的数据容器设计。

    您还可以编写某种通用的fnRender 函数,例如获取列名并使用getElementById() 函数查找相应的按钮元素。

    您的示例代码太小,无法提供更好的答案(为了概括,我们必须至少有 2 个示例:)

    【讨论】:

    • 你好 xmojmr,你是对的,我们不能通过 JSON 对象传递函数,因为它被序列化为字符串。 eval() 也不好用。所以我采用了不同的方法,我在 C# 部分生成了 java-script 作为字符串,并在我的动态表需要脚本时将其转储以查看。由于脚本的一部分是动态的,所以我在 C# 端完成了它,我可以轻松地与数据库交互。
    猜你喜欢
    • 2017-01-04
    • 2022-11-13
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 2019-08-18
    • 1970-01-01
    相关资源
    最近更新 更多