请问这是不是用户自定义控件,怎样计算出显示的数量总和?在线等待!!
<fanwe:list 
id="checkList" 
name="order" 
style="list" 
datasource="list" 
order="false"
  show="id:编号|8%,ORDER_SN:订单编号,data_name:商品名称,number:数量,final_amount|priceFormat:订单金额,PName:收款帐户,money|priceFormat:收款金额,user_name:会员,create_time|toDate:收款时间" /> 

解决方案 »

  1.   

    是不是这个 public function _list($attr)
        {
         $lang_conf = C("LANG_CONF");  //存在多语言的表及列  by matthew    
         //$lang_envs = D("LangConf")->findAll(); //当前所有的语言环境
        
            $tag        = $this->parseXmlAttr($attr,'list');
            $id         = $tag['id'];                       //表格ID
            $datasource = $tag['datasource'];               //列表显示的数据源VoList名称
            $pk         = empty($tag['pk'])?'id':$tag['pk'];//主键名,默认为id
            $style      = $tag['style'];                    //样式名
            $name       = !empty($tag['name'])?$tag['name']:'vo';                 //Vo对象名
            $action     = $tag['action'];                   //是否显示功能操作
            $checkbox   = $tag['checkbox'];                 //是否显示Checkbox
            $order   = $tag['order'];                 //是否排序
            $child = $tag['child'];
    $preload = $tag['preload'];
            $ext = $tag['ext'];  //扩展的参数
    if (empty($order)){
    $order = true;
    }
    else 
    {
    $order = false;
    }
            if(isset($tag['actionlist'])) {
                $actionlist = explode(',',trim($tag['actionlist']));    //指定功能列表
            }        if(substr($tag['show'],0,1)=='$') {
                $show   = $this->tpl->get(substr($tag['show'],1));
            }else {
                $show   = $tag['show'];
            }
            $tmp_show       = explode(',',$show);                //列表显示字段列表
            
            $show = array();
            $table_name = parse_name(MODULE_NAME);  //当前操作的表名
        foreach($tmp_show as $key=>$val) {
             $fields[] = explode(':',$val);
            }          foreach($fields as $field) 
            {//显示指定的字段
                $property = explode('|',$field[0]);
                $showname = explode('|',$field[1]);
                $field_2 = isset($field[2])?":".$field[2]:"";
                if(isset($lang_conf[$table_name][$property[0]]))
                {            
    //             foreach($lang_envs as $lang_item)
    //             {
    $lang_item['id'] = 1;
                 $item = "";
                 $item.=$property[0]."_".$lang_item['id'];  //生成当前语言环境的字段名称
                 for($i=1;$i<count($property);$i++)
                 {
                 $item.="|".$property[$i];
                
                 }
                 $item.=":".$showname[0];
                 for($i=1;$i<count($showname);$i++)
                 {
                 $item.="|".$showname[$i];
                   }
                 $item.=$field_2;
                    $show[] = $item;
    //             }
                }
                else 
                {
                 $item = "";
                 $item.=$property[0];  //生成当前语言环境的字段名称
                 for($i=1;$i<count($property);$i++)
                 {
                 $item.="|".$property[$i];
                 }
                 $item.=":".$showname[0];
                 for($i=1;$i<count($showname);$i++)
                 {
                 $item.="|".$showname[$i];
                 }
                 $item.=$field_2;
                 $show[] = $item;
                }
            }        //计算表格的列数
            $colNum     = count($show);
            if(!empty($checkbox))   $colNum++;
            if(!empty($action))     $colNum++;        //显示开始
    $parseStr = "<!-- Think 系统列表组件开始 -->\n";
            $parseStr  .= '<table id="'.$id.'" class="'.$style.'" cellpadding=0 cellspacing=0 >';
            //$parseStr  .= '<tr><td height="5" colspan="'.$colNum.'" class="topTd" ></td></tr>';
            $parseStr  .= '<tr class="row" >';
            //列表需要显示的字段
            $fields = array();
            foreach($show as $key=>$val) {
             $fields[] = explode(':',$val);
            }
            if(!empty($checkbox) && 'true'==strtolower($checkbox)) { //如果指定需要显示checkbox列
                $parseStr .='<th width="8"><input type="checkbox" id="check" onclick="CheckAll(\''.$id.'\')"></th>';
            }
                    
            foreach($fields as $field) {//显示指定的字段
                $property = explode('|',$field[0]);
                $showname = explode('|',$field[1]);
                if(isset($showname[1])) {
                    $parseStr .= '<th width="'.$showname[1].'">';
                }else {
                    $parseStr .= '<th>';
                }
                $showname[2] = isset($showname[2])?$showname[2]:$showname[0];
     
                if ($order){
                 if($ext&&$ext!='')
                 $parseStr .= '<a href="javascript:sortBy(\''.$property[0].'\',\'{$sort}\',\''.ACTION_NAME.'\',\''.$ext.'\')" title="按照'.$showname[2].'{$sortType} ">'.$showname[0].'<eq name="order" value="'.$property[0].'" ><img src="'.__TMPL__.'ThemeFiles/Images/{$sortImg}.gif" width="12" height="17" border="0" align="absmiddle"></eq></a></th>';
                else
                 $parseStr .= '<a href="javascript:sortBy(\''.$property[0].'\',\'{$sort}\',\''.ACTION_NAME.'\')" title="按照'.$showname[2].'{$sortType} ">'.$showname[0].'<eq name="order" value="'.$property[0].'" ><img src="'.__TMPL__.'ThemeFiles/Images/{$sortImg}.gif" width="12" height="17" border="0" align="absmiddle"></eq></a></th>';
                }else{
               $parseStr .= $showname[0].'</th>';
                }
            }
            if(!empty($action)) {//如果指定显示操作功能列
                $parseStr .= '<th >操作</th>';
            }        $parseStr .= '</tr>';
            $parseStr .= '<volist name="'.$datasource.'" id="'.$name.'" ><tr class="row" onmouseover="over(event)" onmouseout="out(event)" onclick="change(event)" >'; //支持鼠标移动单元行颜色变化 具体方法在js中定义       
      

  2.   

     $keyname= 'key';
            if($preload) $keyname='key[]';
            if(!empty($checkbox)) {//如果需要显示checkbox 则在每行开头显示checkbox
                $parseStr .= '<td><if condition="($'.$name.'[\'level\'] eq \'0\')or($'.$name.'[\'level\'] gt 0)"><else /><input type="checkbox" class="'.$keyname.'" name="'.$keyname.'" value="{$'.$name.'.'.$pk.'}" <if condition="$'.$name.'[\'checked\']">checked="checked"</if> ></if></td>';
            }        foreach($fields as $field) {
                //显示定义的列表字段
                $parseStr   .=  '<td>';
                if(!empty($field[2])) {
                    // 支持列表字段链接功能 具体方法由JS函数实现
                    $href = explode('|',$field[2]);
                    
                 $property = explode('|',$field[0]);
                    if(count($property)>1) {
                        $field_show = $property[0];
                    }else {
                        $field_show = $field[0];
                    }
                    
                    if(count($href)>1) {
                        //指定链接传的字段值
                        // 支持多个字段传递
                       
                        $array = explode('^',$href[1]);
                        $temp = array();
                    
                        if(count($array)>1) {
                            foreach ($array as $a){                        
                                $temp[] =  '\'{$'.$name.'.'.$a.'|addslashes}\'';
                            }
                            $parseStr .= '<a href="javascript:'.$href[0].'('.implode(',',$temp).')" title="{$'.$name.'.'.$field_show.'|strip_tags}">';
                        }else{
                            $parseStr .= '<a href="javascript:'.$href[0].'(\'{$'.$name.'.'.$href[1].'|addslashes}\')" title="{$'.$name.'.'.$field_show.'|strip_tags}">';
                        }
                    }else {
                        //如果没有指定默认传编号值
                        $parseStr .= '<a href="javascript:'.$field[2].'(\'{$'.$name.'.'.$pk.'|addslashes}\')" title="{$'.$name.'.'.$field_show.'|strip_tags}">';
                    }
                }
                if(strpos($field[0],'^')) {
                    $property = explode('^',$field[0]);
                    foreach ($property as $p){
                        $unit = explode('|',$p);
                        if(count($unit)>1) {
                            $parseStr .= '{$'.$name.'.'.$unit[0].'|'.$unit[1].'} ';
                        }else {
                            $parseStr .= '{$'.$name.'.'.$p.'} ';
                        }
                    }
                }else{
                    $property = explode('|',$field[0]);
                    if(count($property)>1) {
                        $parseStr .= '{$'.$name.'.'.$property[0].'|'.$property[1].'}';
                    }else {
                        $parseStr .= '{$'.$name.'.'.$field[0].'}';
                    }
                }
                if(!empty($field[2])) {
                    $parseStr .= '</a>';
                }
                $parseStr .= '</td>';        }
            if(!empty($action)) {//显示功能操作
                if(!empty($actionlist[0])) {//显示指定的功能项
                    $parseStr .= '<td>';
                    foreach($actionlist as $val) {
    if(strpos($val,':')) {
    $a = explode(':',$val);
    $b = explode('|',$a[1]);
    if(count($b)>1) {
    $c = explode('|',$a[0]);
    if(count($c)>1) {
    $parseStr .= '<a href="javascript:'.$c[1].'(\'{$'.$name.'.'.$pk.'}\')"><?php if(0== (is_array($'.$name.')?$'.$name.'["status"]:$'.$name.'->status)){ ?>'.$b[1].'<?php } ?></a><a href="javascript:'.$c[0].'({$'.$name.'.'.$pk.'})"><?php if(1== (is_array($'.$name.')?$'.$name.'["status"]:$'.$name.'->status)){ ?>'.$b[0].'<?php } ?></a>&nbsp;';
    }else {
    $parseStr .= '<a href="javascript:'.$a[0].'(\'{$'.$name.'.'.$pk.'}\')"><?php if(0== (is_array($'.$name.')?$'.$name.'["status"]:$'.$name.'->status)){ ?>'.$b[1].'<?php } ?><?php if(1== (is_array($'.$name.')?$'.$name.'["status"]:$'.$name.'->status)){ ?>'.$b[0].'<?php } ?></a>&nbsp;';
    } }else {
    $parseStr .= '<a href="javascript:'.$a[0].'(\'{$'.$name.'.'.$pk.'}\')">'.$a[1].'</a>&nbsp;';
    }
    }else{
    $array = explode('|',$val);
    if(count($array)>2) {
    $parseStr .= ' <a href="javascript:'.$array[1].'(\'{$'.$name.'.'.$array[0].'}\')">'.$array[2].'</a>&nbsp;';
    }else{
    $parseStr .= ' {$'.$name.'.'.$val.'}&nbsp;';
    }
    }
                    }
                    $parseStr .= '</td>';
                }
            }
           // $parseStr .= '</tr></volist><tr><td height="5" colspan="'.$colNum.'" class="bottomTd"></td></tr></table>';
            $parseStr .= '</tr></volist></table>';
            $parseStr .= "\n<!-- Think 系统列表组件结束 -->\n";
            return $parseStr;
        }
        
    /**
         +----------------------------------------------------------
         * imageBtn标签解析
         * 格式: <html:imageBtn type="" value="" />
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         * @param string $attr 标签属性
         +----------------------------------------------------------
         * @return string|void
         +----------------------------------------------------------
         */
        public function _imageBtn($attr)
        {
            $tag        = $this->parseXmlAttr($attr,'imageBtn');
            $name       = $tag['name'];                //名称
            $value      = $tag['value'];                //文字
            $id         = $tag['id'];                //ID
            $style      = $tag['style'];                //样式名
            $click      = $tag['click'];                //点击
            $type       = empty($tag['type'])?'button':$tag['type'];                //按钮类型        if(!empty($name)) {
                $parseStr   = '<input type="'.$type.'" id="'.$id.'" name="'.$name.'" value="'.$value.'" onclick="'.$click.'" class="'.$name.' imgButton">';
            }else {
             $parseStr   = '<input type="'.$type.'" id="'.$id.'"  name="'.$name.'" value="'.$value.'" onclick="'.$click.'" class="button">';
            }        return $parseStr;
        }