对象转换成JSON的时候是这样的:
  [[
                { title: 'ID', field: 'KeyId', width: 80 },                
                {
                    title: '超管',
                    field: 'IsAdmin',
                    width: 80,
                    align: 'center',
                    formatter: 'function (v, d, i) {
                        if (d.UserName == "admin")
                            return '';
                        return '<img style="cursor:pointer" title="设置超管" onclick="javascript:setUserAttr(\'isadmin\','+d.KeyId+','+v+')" src="/css/icon/16/bullet_' + (v ? "tick.png" : "minus.png") + '" />';
                    }'

                },
                {title:'描述',field:'Re',width:200}
            ]]实际想要的是这样的
  [[
                { title: 'ID', field: 'KeyId', width: 80 },                
                {
                    title: '超管',
                    field: 'IsAdmin',
                    width: 80,
                    align: 'center',
                    formatter: function (v, d, i) {
                        if (d.UserName == "admin")
                            return '';
                        return '<img style="cursor:pointer" title="设置超管" onclick="javascript:setUserAttr(\'isadmin\','+d.KeyId+','+v+')" src="/css/icon/16/bullet_' + (v ? "tick.png" : "minus.png") + '" />';
                    }

                },
                {title:'描述',field:'Re',width:200}
            ]]问题:由于 formatter: 'function (v, d, i) {
                        if (d.UserName == "admin")
                            return '';
                        return '<img style="cursor:pointer" title="设置超管" onclick="javascript:setUserAttr(\'isadmin\','+d.KeyId+','+v+')" src="/css/icon/16/bullet_' + (v ? "tick.png" : "minus.png") + '" />';
                    }'
被当作字符串用了,所以错误,那位仁兄能帮忙解决下,感激不尽

解决方案 »

  1.   

    在外部定义个变量var temp=function (v, d, i) {
                             if (d.UserName == "admin")
                                 return '';
                             return '<img style="cursor:pointer" title="设置超管" onclick="javascript:setUserAttr(\'isadmin\','+d.KeyId+','+v+')" src="/css/icon/16/bullet_' + (v ? "tick.png" : "minus.png") + '" />';
                         }然后  formatter:temp,
      

  2.   

    看起来像是实现某一列的输出格式的,理论这些东西都应该在前台的可以在调用formatter属性是加个eval试试的,例如eval(formatter);
      

  3.   

    关键定义这个 后台经过JSON过后 会是 formatter:"temp" 这个temp 还是字符串,调用不到方法
      

  4.   

    formatter:"'"+temp+"'",拼一下不就好了
      

  5.   

    我们一直都是这么用的,你检查一些拼字符串的格式,应该是格式的问题,但是函数绝对是可以执行的
    不会给formatter赋temp的值的
      

  6.   

    var temp= function (v, d, i) {
            if (d.UserName == "admin")
                return '';
            return '<img style="cursor:pointer" title="设置超管" onclick="javascript:setUserAttr(\'isadmin\',' + d.KeyId + ',' + v + ')" src="/css/icon/16/bullet_' + (v ? "tick.png" : "minus.png") + '" />';
        }
         [[
                     { title: 'ID', field: 'KeyId', width: 80 },                
                     {
                         title: '超管',
                         field: 'IsAdmin',
                         width: 80,
                         align: 'center',
                         formatter: '' + temp + '',
                     },
                     {title:'描述',field:'Re',width:200}
                 ]]
      

  7.   

    var temp= function (v, d, i) {
            if (d.UserName == "admin")
                return '';
            return '<img style="cursor:pointer" title="设置超管" onclick="javascript:setUserAttr(\'isadmin\',' + d.KeyId + ',' + v + ')" src="/css/icon/16/bullet_' + (v ? "tick.png" : "minus.png") + '" />';
        }
         [[
                     { title: 'ID', field: 'KeyId', width: 80 },                
                     {
                         title: '超管',
                         field: 'IsAdmin',
                         width: 80,
                         align: 'center',
                         formatter: '' + temp + '',
                     },
                     {title:'描述',field:'Re',width:200}
                 ]] 
      

  8.   

    var temp= function (v, d, i) {
             if (d.UserName == "admin")
                 return '';
             return '<img style="cursor:pointer" title="设置超管" onclick="javascript:setUserAttr(\'isadmin\',' + d.KeyId + ',' + v + ')" src="/css/icon/16/bullet_' + (v ? "tick.png" : "minus.png") + '" />';
         }
          [[
                      { title: 'ID', field: 'KeyId', width: 80 },                
                      {
                          title: '超管',
                          field: 'IsAdmin',
                          width: 80,
                          align: 'center',
                          formatter: '' + temp + '',
                      },
                      {title:'描述',field:'Re',width:200}
                  ]] 这个也不行吗?
      

  9.   

    你把formatter: '' + temp + '',换成:formatter: '"' + temp + '"',
    再试试
      

  10.   

    你对象解析完json的格式就是正确的啊, 然后拿到eval(JSON[2].formatter); 就执行方法拉。
      

  11.   

    formatter: function (v, d, i) {
                            if (d.UserName == admin)
                                return '';
                            return '<img style=\"cursor:pointer\" title=\" 设置超管\"  onclick=\" javascript:setUserAttr(\'isadmin\','+d.KeyId+','+v+')" src="/css/icon/16/bullet_' + (v ? "tick.png" : "minus.png") + '\" />';
                        }
      

  12.   


    function test(v, d, i) {
        if (d.UserName == "admin")
            return '';
        return '<img style="cursor:pointer" title="设置超管" onclick="javascript:setUserAttr(\'isadmin\','+d.KeyId+','+v+')" src="/css/icon/16/bullet_' + (v ? "tick.png" : "minus.png") + '" />';formatter:test
      

  13.   


    formatter:test 这个是JSON出来的数据 应该是 formatter:"test" 在这种情况下调用test
      

  14.   

    temp = function(v, d, i) {
        alert(v);
    }
    var root = [[{
        title: 'ID',
        field: 'KeyId',
        width: 80
    },
    {
        title: '超管',
        field: 'IsAdmin',
        width: 80,
        align: 'center',
        formatter: 'temp(1)'
    },
    {
        title: '描述',
        field: 'Re',
        width: 200
    }]];
    $(root[0]).each(function(i, o) {
        if (o.formatter) eval(o.formatter);
    })
      

  15.   

            //加载数据
            $(function () {
                $('#tt').datagrid({
                    idField: 'id',
                    singleSelect: true,
                    url: '../Handler/ProjectHandler.ashx?type=Find',
                    columns: [[
                    { field: 'ProjectName', title: '项目名称', width: $(this).width() * 0.1 },
                    { field: 'ProjectType', title: '项目类别', width: $(this).width() * 0.07, formatter: getType },
                    { field: 'BelongDepart', title: '归口部门', width: $(this).width() * 0.1, formatter: getDep },
                    { field: 'AssumeDepart', title: '承担单位', width: $(this).width() * 0.15 },
                    { field: 'DeclaredTime', title: '申报时间', width: $(this).width() * 0.15 },
                    { field: 'DeclarationFunds', title: '申请经费', width: $(this).width() * 0.08 },
                    { field: 'TotalFunds', title: '项目总经费', width: $(this).width() * 0.08 },
                    { field: 'ProjectPrincipal', title: '项目负责人', width: $(this).width() * 0.08 },
                    { field: 'DeclaredTime', title: '填报时间', width: $(this).width() * 0.1, formatter: formatterdate }
                    ]],
                    pagination: true,
                    rownumbers: true
                });
                var p = $('#tt').datagrid('getPager');
                $(p).pagination({
                    pageSize: 15,//每页显示的记录条数,默认为10           
                    pageList: [15, 30, 45],//可以设置每页记录条数的列表           
                    beforePageText: '第',//页数文本框前显示的汉字           
                    afterPageText: '页    共 {pages} 页',
                    displayMsg: '当前显示 {from} - {to} 条记录   共 {total} 条记录'
                });
            });        //获取项目类别
            function getType(value) {
                var temp = null;
                $.ajax({
                    type: 'GET',
                    async: false,
                    url: '../Handler/ProjectHandler.ashx?type=Query&typeId=' + value,
                    success: function (data) {
                        temp = data
                    }
                });
                return temp;
            }        //获取归口部门
            function getDep(value) {
                var temp = null;
                $.ajax({
                    type: 'GET',
                    async: false,
                    url: '../Handler/Department.ashx?type=Query&id=' + value,
                    success: function (data) {
                        temp = data
                    }
                });
                return temp;
            }
    我的项目里面的   有问题么?
      

  16.   


     formatter:"test"    你确定?
      

  17.   


    <!DOCTYPE html>  
    <html>  
    <head>  
        <meta charset="UTF-8">  
        <title>Format DataGrid Columns - jQuery EasyUI Demo</title>  
        <link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">  
        <link rel="stylesheet" type="text/css" href="../../themes/icon.css">  
        <link rel="stylesheet" type="text/css" href="../demo.css">  
        <script type="text/javascript" src="../../jquery-1.8.0.min.js"></script>  
        <script type="text/javascript" src="../../jquery.easyui.min.js"></script>  
    </head>  
    <body>  
        <h2>Format DataGrid Columns</h2>  
        <div class="demo-info">  
            <div class="demo-tip icon-tip"></div>  
            <div>The list price value will show red color when less than 30.</div>  
        </div>  
        <div style="margin:10px 0;"></div>  
        <table class="easyui-datagrid" title="Format DataGrid Columns" style="width:700px;height:250px"  
                data-options="rownumbers:true,singleSelect:true,iconCls:'icon-ok',url:'../datagrid/datagrid_data1.json'">  
            <thead>  
                <tr>  
                    <th data-options="field:'itemid',width:80">Item ID</th>  
                    <th data-options="field:'productid',width:100">Product</th>  
                    <th data-options="field:'listprice',width:80,align:'right',formatter:formatPrice">List Price</th>  
                    <th data-options="field:'unitcost',width:80,align:'right'">Unit Cost</th>  
                    <th data-options="field:'attr1',width:240">Attribute</th>  
                    <th data-options="field:'status',width:60,align:'center'">Status</th>  
                </tr>  
            </thead>  
        </table>  
        <script>  
            function formatPrice(val,row){  
                if (val < 30){  
                    return '<span style="color:red;">('+val+')</span>';  
                } else {  
                    return val;  
                }  
            }  
        </script>  
    </body>  
    </html>  这是官网的实例。。哪个告诉你要用 formatter:"test"    函数名 加双引号使用的?