waca408 2009-07-14 11:02
浏览 212
已采纳

dhtmlXTree.js bug问题

大哥大姐们,帮忙看下是什么问题:
树已经获得出来如:
大厦(父类)点击父类时展开A楼,B楼,c楼
然后我在收缩
这时我在去双击大厦的时候就会出现 A楼,B楼,c楼,A楼,B楼,c楼这样的情况
依次点击都会进行累加,很是奇怪,以下是我双击是触发的事件,我贴出来大家帮忙看看:
dhtmlXTreeObject.prototype.setOnDblClickHandler= function(func){
if(typeof(func)=="function")this.dblclickFuncHandler=func;else this.dblclickFuncHandler=eval(func);
};
页面上的function如下:
function loadxml(){
//treeOrganization_tree是下面div的id
tree = new dhtmlXTreeObject("treeOrganization_tree","100%","100%",0);
tree.setImagePath("<%=request.getContextPath()%>/images/tree/");
//tree加载的时侯就去调用tonclick方法
tree.setOnDblClickHandler(tonclick);
var myUrl="<%=request.getContextPath()%>/created.action";
$.ajax({
type: "POST",
url: myUrl,
data: "",
success: function(msg){
tree.loadXMLString(msg);
}
});
}
//上一个点击的子目录ID
var preChildId;
function tonclick(id){
//查询员工信息 jquery封装的一个ajax方法url ajax的回调函数success
//msg则是从服务器端返回的东西,第一次获得的是一组然后用,隔开
getEmp(id);
if(preChildId != id){
alert(preChildId+'test');
var myUrl="<%=request.getContextPath()%>/creatChild.action";
$.ajax({
type: "POST",
url: myUrl,
data: "id="+id,
success: function(msg){
if(msg!="" && msg!='undefined'){
var ss = msg.split(",");
if(ss == '0'){
return;
}
for(var i=0;i<ss.length;i++){
//获得第一组信息Id 和name用*隔开
var productType = ss[i].split("*");
var typeid = productType[0];
var typename = productType[1];
preChildId = typeid;
tree.moveItem();
//id,我要在这个节点下生成一个id和一个name 后面的四个0是图片的意思
tree.insertNewItem(id,typeid,typename,0,0,0,0,'SELECT');
}
}
}
}

                );
            }
    }

这是insertNewItem
dhtmlXTreeObject.prototype.insertNewItem=function(parentId,itemId,itemText,itemActionHandler,image1,image2,image3,optionStr,childs){
var parentObject=this._globalIdStorageFind(parentId);
if(!parentObject)return(-1);
var nodez=this._attachChildNode(parentObject,itemId,itemText,itemActionHandler,image1,image2,image3,optionStr,childs);

if((!this.XMLloadingWarning)&&(this.childCalc))this._fixChildCountLabel(parentObject);

return nodez;
};

dhtmlXTreeObject.prototype.insertNewChild=function(parentId,itemId,itemText,itemActionHandler,image1,image2,image3,optionStr,childs){
return this.insertNewItem(parentId,itemId,itemText,itemActionHandler,image1,image2,image3,optionStr,childs);
}

[b]问题补充:[/b]
pJun我有按照你的操作去调用,确实是这样的,我想问下,那我要怎么做把以前的旧消息卸载掉在去加载新的消息的呢

  • 写回答

3条回答 默认 最新

  • pjuneye 2009-07-14 11:31
    关注

    [code="java"]
    function loadxml(){
    //treeOrganization_tree是下面div的id
    tree = new dhtmlXTreeObject("treeOrganization_tree","100%","100%",0);
    tree.setImagePath("<%=request.getContextPath()%>/images/tree/");
    //tree加载的时侯就去调用tonclick方法
    tree.setOnDblClickHandler(tonclick);
    var myUrl="<%=request.getContextPath()%>/created.action";
    $.ajax({
    type: "POST",
    url: myUrl,
    data: "",
    success: function(msg){
    // 把清理代码加到这里试试看哦.
    tree.loadXMLString(msg);
    }
    });
    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 Stata 面板数据模型选择
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用