我有个grid需要显示 id    评论主题    评论人    是否匿名   时间 评论人项根据是否匿名 显示匿名或者评论人名字 如果匿名,评论人项显示匿名,否则显示评论人名称. 这个肯定是渲染前就要处理,但是怎么处理,求高手指点.--------------------------------------------------------------------------
 var cm = new Ext.grid.ColumnModel([sm,
    { header: "状态", dataIndex: "IsRead", width: 30, tooltip: "已读/未读", sortable: true, renderer: formatIsRead },
    { header: "评论主题", dataIndex: "EvaTitle", tooltip: "评论主题", sortable: true },
    { header: "评论人", dataIndex: "SelfUserName", tooltip: "用户名/英文名", sortable: true },
    { header: "评论状态", dataIndex: "PostLev", tooltip: "评论状态", sortable: true, renderer: formatPostLev },
    { header: "评论时间", dataIndex: "PostTime", tooltip: "评论时间", sortable: true}]);

解决方案 »

  1.   


    { header: "评论人", dataIndex: "SelfUserName", tooltip: "用户名/英文名", sortable: true }
    写成
    { header: "评论人", dataIndex: "SelfUserName", tooltip: "用户名/英文名", sortable: true,
    renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){
    if(record.get("")==“匿名”/*这里是否匿名列对应的dataIndex是什么就写什么*/)
      return "匿名"
    }else{
      return value;//否则返回评论人名称
    }
     }
      

  2.   


    上面的问题解决了.谢谢大哥.但是又出了一个问题 var tbar = new Ext.Toolbar(["", "-", "", "分类查看:", comboBox, "", "-", "",
            { text: "删除评论", iconCls: "deleteicon", tooltip: "删除评论", handler: evaDeleteFn }, "", "-", "",
            { text: "查看评论", iconCls: "editicon", tooltip: "浏览评论内容", handler: readEevFn }, "", "-", "",
            { text: "刷新", iconCls: "refreshicon", tooltip: "刷新信息", handler: refreshFn }, "", "-", "", "<font color=red>双击查看详细信息</font>"]);
        var rightMenu = new Ext.menu.Menu({ items: [
            { text: '删除评论', iconCls: 'deleteicon', handler: evaDeleteFn },
            { text: '查看评论', iconCls: 'editicon', handler: readEevFn },
            { text: '刷新', iconCls: 'refreshicon', handler: refreshFn }
        ]
        });  function readEevFn() {
            var row = EvaGrid.getSelectionModel().getSelections();
            if (row.length == 0) { Ext.Msg.alert("提示", "请选择一行"); }
            else if (row.length > 1) { Ext.Msg.alert("提示", "只能选择一行"); } 
            else if (row.length == 1) { alert(row[0][0]); }
        }这是我写的添加一个Toolbar上面有个按钮查看当前选中评论
    下面grid右键可以查看当前选中评论这是我声明的grid
     var EvaGrid = new Ext.grid.GridPanel({
            store: evaStore, sm: sm, cm: cm, loadMask: true, autoScroll: true, border: false, tbar: tbar, bbar: bbar,
            viewConfig: { columnsText: "显示/隐藏列", sortAscText: "正序排列", sortDescText: "倒序排列", forceFit: true },
            listeners: { "rowdblclick": function(grid, rowIndex, e) { ReadEva(grid.getStore().getAt(rowIndex).data); },
                'contextmenu': function(e) { e.stopEvent(); },
                'rowcontextmenu': function(grid, rowIndex, e) { e.stopEvent(); rightMenu.showAt(e.getXY()); }
            }
        });给grid声明了一个双击事件,双击显示当前点击评论,这个都可以.但是右键和toolbar按钮查看就不行了,
    不知道该传个什么参数进来.
      

  3.   


    var tbar = new Ext.Toolbar(["", "-", "", "分类查看:", comboBox, "", "-", "",
      { text: "删除评论", iconCls: "deleteicon", tooltip: "删除评论", handler: evaDeleteFn }, "", "-", "",
      { text: "查看评论", iconCls: "editicon", tooltip: "浏览评论内容", handler: readEevFn }, "", "-", "",
      { text: "刷新", iconCls: "refreshicon", tooltip: "刷新信息", handler: refreshFn }, "", "-", "", "<font color=red>双击查看详细信息</font>"]);
      var rightMenu = new Ext.menu.Menu({ items: [
      { text: '删除评论', iconCls: 'deleteicon', handler: evaDeleteFn },
      { text: '查看评论', iconCls: 'editicon', handler: readEevFn },
      { text: '刷新', iconCls: 'refreshicon', handler: refreshFn }
      ]
      });以上这些
    handler:evaDeleteFn ,handler:readEevFn ,handler:refreshFn 
    可以写成handler:function(){
       var row = EvaGrid.getSelectionModel().getSelections();
      if (row.length == 0) { Ext.Msg.alert("提示", "请选择一行"); }
      else if (row.length > 1) { Ext.Msg.alert("提示", "只能选择一行"); } 
      else if (row.length == 1) { alert(row[0][0]); }
    }
    或者是tbar.items.item(0).setHandler(refreshFn);
      

  4.   


    不是这个问题,是readEevFn 这个方法,
    我是点击查看评论,出现一个window,上面是评论消息和内容.
    我写了个readEva(recode)方法用来显示内容,
    上面的 alert(row[0][0]);这里应该是调用这个readEva的方法.
    但是我不知道传什么参数?这些内置的参数弄不清楚.
    readEva = function(record) {
        evaChangeReadState(record.EvaID);
        var form = new Ext.form.FormPanel({
            frame: true,
            defaultType: "textfield",
            defaults: { readOnly: true },
            items: [{
                xtype: "textfield",
                fieldLabel: "标题",
                name: "textvalue",
                width: 400, value: record.EvaTitle
            }, {
                xtype: "textarea",
                fieldLabel: "Text",
                name: "内容", value: record.PostContent,
                height: 230,
                width: 400
            }
            ]
        });
        var win = new Ext.Window({
            title: "评论查看",
            height: 400,
            width: 600,
            bodyStyle: "padding:5 5 5 5",
            closeAction: "hide",
            resizable: true,
            modal: true,
            items: [form],
            buttons: [{ text: "关闭", handler: function() { win.hide(); } }]
        });
        
        win.show();
    }
      

  5.   

    是不是选中grid的一行然后在formpanel中显示出来?
    如果是这样的话,就不用传之过去了。
    根据列模型的getSelected()获取选中的一行
    然后formpanel.form.loadRecord(record)就可以load选中的一行到formpanel中了。
    (注意,record的name属性值要和form中的字段对应一样)
      

  6.   

    看看api中的 loadRecord (Ext.form.BasicForm)