上善若水
愿倾其毕生之功,高扬.NET旗帜
在对BDNavitree上的节点进行过滤的同时,首先我们要判断变量BDNavitree是否存在!从下面的代码,我们可以看出利用setClsFilter进行节点的过滤体现了两种思路
//首先判断二型视图的变量是否存在
if(window.bdNaviTree)
{
    bdNaviTree.onNodeChanged.addHandler(bdNaviTree_onNodeChanged);
    
//设置过滤条件
    var filter = "WHDW = '" + xgdw + "'";
    
var clsID = "8BD9B229-860B-4C61-B2B6-1BD052C6933F";//变电站
    bdNaviTree.setClsFilter(clsID, filter);
    clsID 
= "1E992BB7-999A-4D30-B90A-2C2D8BD23BD5";
    bdNaviTree.setClsFilter(clsID, filter);
    clsID 
= "AE6774D8-6478-4C7D-A7AF-B12C837204FB";
    bdNaviTree.setClsFilter(clsID, filter);
    clsID 
= "113BBF63-75D3-4080-9B67-ABB6BF73C6A0";
    bdNaviTree.setClsFilter(clsID, filter);
    clsID 
= "E7F970FC-E3A2-4836-B404-B785581DAA89";
    bdNaviTree.setClsFilter(clsID, filter);
    
    
//隐藏不需要维护的节点
    filter = "DYLX || DWNAME in (select h.DYLX || h.DWNAME from mw_app.PM_BZ_SB_DYLX h where h.obj_id in (select c.src_obj_id  from mw_sys.mwt_om_link c ";
    filter 
+= "where c.tgt_obj_id in ( ";
    filter 
+= "select bdz.obj_id from mw_app.PM_BZ_SB_BDZ bdz where bdz.whdw = '" + xgdw + "'";
    filter 
+= " union ";
    filter 
+= "select hlz.obj_id from MW_APP.PM_BZ_SB_HLZ hlz where hlz.whdw = '" + xgdw + "'";
    filter 
+= " union ";
    filter 
+= "select cbz.obj_id from MW_APP.PM_BZ_SB_CBZ cbz where cbz.whdw = '" + xgdw + "'";
    filter 
+= " union ";
    filter 
+= "select fdc.obj_id from MW_APP.PM_BZ_SB_FDC fdc where fdc.whdw = '" + xgdw + "'";
    filter 
+= " union ";
    filter 
+= "select xl.obj_id from MW_APP.PM_BZ_SB_XL xl where xl.whdw = '" + xgdw + "'";
    filter 
+= " ))) ";        
    clsID 
= "39C7134E-2FBF-4002-A99A-AAAE0817CE97";
    bdNaviTree.setClsFilter(clsID, filter);
}

1. 直接通过业务对象的属性进行过滤
//设置过滤条件
 var filter = "WHDW = '" + xgdw + "'";
 var clsID = "8BD9B229-860B-4C61-B2B6-1BD052C6933F";//变电站
 bdNaviTree.setClsFilter(clsID, filter)


2.这种方式追溯起来和上面也是一样的,都是通过属性过滤,但是过程完全不一样!
这里主要通过挂接的业务对象获取父对象的属性从而实现业务对象的过滤
select h.DYLX || h.DWNAME from mw_app.PM_BZ_SB_DYLX h where h.obj_id in(......)

3.过滤条件的重新设置
function Application_onStart()
{
    
//获取当前登录用户的处室单位
    var userid = mw.Portal.currentUser.id;
    
var sql = "select deps.mc from mw_sys.mwt_pd_emps emps,mw_sys.mwt_pd_deps deps,mwt_om_link l "
    sql 
+= "where ";
    sql 
+= "emps.obj_id=l.tgt_obj_id and l.src_obj_id=deps.obj_id and emps.sysuserid='" + userid + "'";
    
var indexTable = mw.data.DataAccessAgent.executeQuery(sql);
    
var objidArr = indexTable.rows[0].getValues();
    
var mc = objidArr[0];
    
if(mc != "技术经济处")
    
{
        
var filter = "MC = '" + mc + "'";
        
var clsID = "B3636AF8-2952-4342-ADB4-A5A2C9358AB2";//项目管理的处室类型ID
        bdNaviTree.setClsFilter(clsID, filter);
    }

    
else
    
{
        bFilter 
= true;
        setItemsDisplay(
true)
        
//添加按钮
        var target = document.getElementById("bdNaviTree_container");
        
var parObj = target.parentNode;
        
        
var btn = document.createElement("button");
        btn.value 
= "全部显示";
        btn.onclick 
= setItemsDisplay.bind(false);
        
var parObj = target.parentNode;
        parObj.insertBefore(btn,target);
        
        btn 
= document.createElement("button");
        btn.value 
= "显示未完成";
        btn.onclick 
= setItemsDisplay.bind(true);
        parObj.insertBefore(btn,target);
    }

}


Function.prototype.bind  
=  function()   
{   
        
var   __method   =   this;   
        
var   arg   =   arguments;   
        
return   function()   
                
{   
                  __method.apply(window,   arg);   
                }
   
}


function setItemsDisplay(bPartShow)
{
    
var filter = " XMWC IS NOT NULL or XMWC IS NULL ";
    
    
if(bPartShow)//仅显示未完成
    {
        filter 
= "XMWC not in ('是') or XMWC IS NULL";
    }

    
    
var clsID = "03D1B2F0-2EB1-4551-97A1-5309A452E9D9";//项目申请书
    bdNaviTree.setClsFilter(clsID, filter);
    bdNaviTree.getSelectedNode().refresh();
}
posted on 2007-10-24 14:28  小兔快跑  阅读(162)  评论(0)    收藏  举报