jueyue 发表于 2013-8-27 23:40:25

dgcol更改样式

在最新版已经支持了,建议大家还是下载架包使用,容易升级,源码可以用来学习不,要是改了源码,升级就不好搞了

首先在这个DataGridColumnTag 加入我们需要的属性protected String style; //Td的CSS
给他一个set方法,然后在这个endTag,给添加到父类中去public int doEndTag() throws JspTagException {
                Tag t = findAncestorWithClass(this, DataGridTag.class);
                DataGridTag parent = (DataGridTag) t;
                parent.setColumn(title,field,width,rowspan,colspan,align,sortable,checkbox,formatter,hidden,replace,treefield,image,query,url,funname,arg,queryMode, dictionary,frozenColumn,extend,style);
                return EVAL_PAGE;
        }在parent,setColumn方法中添加dateGridColumn.setStyle(style);/**
       * 设置 颜色替换值
       * @param field
       * @param text
       * @param value
       */
        private void setStyleColumn(String field, String text, String value) {
                ColumnValue columnValue = new ColumnValue();
                columnValue.setName(field);
                columnValue.setText(text);
                columnValue.setValue(value);
                columnStyleList.add(columnValue);
        }哦,对了在这个类里面,添加protected List<ColumnValue> columnStyleList = new ArrayList<ColumnValue>();// 颜色替换集合
不然没有地方加不,嘿嘿,然后在这个方法中protected void getField(StringBuffer sb,int frozen) {}// 背景设置
                        if (columnStyleList.size() > 0 && !column.getField().equals("opt")) {
                                String testString = "";
                                for (ColumnValue columnValue : columnStyleList) {
                                        if (columnValue.getName().equals(column.getField())) {
                                                String[] value = columnValue.getValue().split(",");
                                                String[] text = columnValue.getText().split(",");
                                                sb.append(",styler:function(value,rec,index){");
                                                for (int j = 0; j < value.length; j++) {
                                                        testString += "if(value=='" + value + "'){return \'" + text + "\'}";
                                                }
                                                sb.append(testString);
                                                sb.append("else{return value}");
                                                sb.append("}");
                                        }
                                }
                               
                        }就可以了,记得别忘记了在 doStartTag()这个方法里面columnStyleList.clear();清除
还有在tld文件中添加我们的字段属性<attribute>
   <name>style</name>
   <required>false</required>
   <rtexprvalue>true</rtexprvalue>
   <description>td CSS 属性</description>
</attribute>style="background:red;_N"这样就想值替换哪有就可以使用了,这里突然想起个bug,不想区分,就不好搞了
这个网友来设计吧



页: [1]
查看完整版本: dgcol更改样式