当我选中一个子节点,点击修改,弹出一个showDialog 对话框修改相应属性,点击保存返回当前选中节点,并且它的显示名称为我们所修改的值!(不刷新树,怎么实现),各路大侠帮帮忙了!!

解决方案 »

  1.   

    就是一个DOM ,可是怎么也显示不了我修改的值。需要代码??
      

  2.   

    我用的是CORDYS XFORM开发的!父页面代码:
    //点击修改触发修改事件
    function update_Click()
    {
      var selectedNode = menuTree.getSelectedItem();
        if(selectedNode==null)
        {
             alert("请选择要修改的节点!");
             return false;
        }
        var data = new Object();
        data.menuCode = selectedNode.data.selectSingleNode(".//MENU_CODE").text;
        data.menuName = selectedNode.data.selectSingleNode(".//MENU_NAME").text;
        data.menuImg = selectedNode.data.selectSingleNode(".//MENU_IMG").text;
        data.menuStatus = selectedNode.data.selectSingleNode(".//MENU_STATUS").text;
        data.menuRe = selectedNode.data.selectSingleNode(".//MENU_REMARK").text;
        application.showDialog(updateMenu.documentElement, data, null, updatecloseHandler, false);
    }
    //修改菜单逻辑处理
    function updatecloseHandler(dialogReturnValue)
    {
        var selectedNode = menuTree.getSelectedItem();
        var data = dialogReturnValue;
        //添加要修改的字段值
        var menuCode = data.menuCode;
        var oldMenuName = selectedNode.data.selectSingleNode(".//MENU_NAME").text;
        var newMenuName = data.menuName;
        var newMenuImg = data.menuImg;
        var newMenuStatus = data.menuStatus;
        var newMenuRe = data.menuRe;
        var menuUpCode = selectedNode.data.selectSingleNode(".//MENU_UP_CODE").text;    //将修改信息保存到数据库中
        var request = UpdateModel.getMethodRequest("get");
        WebForm.setNodeValue(request.selectSingleNode(".//Update"), "tuple/old/app_business_menu/MENU_CODE", menuCode, false);
       
        WebForm.setNodeValue(request.selectSingleNode(".//Update"), "tuple/new/app_business_menu/MENU_CODE", menuCode, false);
        WebForm.setNodeValue(request.selectSingleNode(".//Update"), "tuple/new/app_business_menu/MENU_NAME", newMenuName, false);
        WebForm.setNodeValue(request.selectSingleNode(".//Update"), "tuple/new/app_business_menu/MENU_IMG", newMenuImg, false);
        WebForm.setNodeValue(request.selectSingleNode(".//Update"), "tuple/new/app_business_menu/MENU_REMARK", newMenuRe, false);
        WebForm.setNodeValue(request.selectSingleNode(".//Update"), "tuple/new/app_business_menu/MENU_STATUS", newMenuStatus, false);
        WebForm.setNodeValue(request.selectSingleNode(".//Update"), "tuple/new/app_business_menu/UPDATE_TIME", date, false);    UpdateModel.reset();
    }showDialog页面代码:var gReturnedData = new Object();
    function button1_Click(eventObject)
    {
         if(input1.value=="")
        {
            alert("菜单名称不能为空,请重新输入!");
            return input1.setFocus();
        }
         application.container.close();
    }
    function dialogReturnValue()
    {
        var data = new Object();
        data.menuName = input1.value;
        data.menuImg = input3.value;
        data.menuStatus = select1.value;
        data.menuRe = input2.value;
        data.menuCode  = input4.value;
        return data;
    }
    function Form_Init(eventObject)
    {
        input4.hide();
        var data = application.event.data;
         // create the option to add.
        var option = {value:"0", description:"可用"};
        var option1 ={value:"1",description:"不可用"};
        select1.addOption(option,false,0,false); 
        select1.addOption(option1,false,1,false);
        input1.setValue(data.menuName);
        input3.setValue(data.menuImg);
        select1.setValue(data.menuStatus);
        input2.setValue(data.menuRe)
        input4.setValue(data.menuCode);
    }
    function button2_Click(eventObject)
    {
        application.container.close();
    }
      

  3.   

    直接设值不可以吗?
    selectedNode.data.selectSingleNode(".//MENU_NAME").text = data.menuName;
      

  4.   

    值是改变了,可是显示的树结果没有变化,也就是说 没有刷新。按道理有 innerText应该可以,可是也不行!
      

  5.   

    CORDYS XFORM没有用过,现在只能推断问题所在了
    selectedNode应该是获取了当前选中节点的DOM对象(即存在于内存中的一个变量),该DOM对象的改变是不影响树的显示的
    要改变树的显示,还需通过WebForm.setNodeValue方法来实现
    WebForm.setNodeValue(request.selectSingleNode(".//Update"), "tuple/old/app_business_menu/MENU_CODE", menuCode, false);
       
        WebForm.setNodeValue(request.selectSingleNode(".//Update"), "tuple/new/app_business_menu/MENU_CODE", menuCode, false);
        WebForm.setNodeValue(request.selectSingleNode(".//Update"), "tuple/new/app_business_menu/MENU_NAME", newMenuName, false);
        WebForm.setNodeValue(request.selectSingleNode(".//Update"), "tuple/new/app_business_menu/MENU_IMG", newMenuImg, false);
        WebForm.setNodeValue(request.selectSingleNode(".//Update"), "tuple/new/app_business_menu/MENU_REMARK", newMenuRe, false);
        WebForm.setNodeValue(request.selectSingleNode(".//Update"), "tuple/new/app_business_menu/MENU_STATUS", newMenuStatus, false);
        WebForm.setNodeValue(request.selectSingleNode(".//Update"), "tuple/new/app_business_menu/UPDATE_TIME", date, false);    UpdateModel.reset();
    这段代码LZ再好好检查下吧,应该是这里的问题了
      

  6.   

    WebForm.setNodeValue :
    It sets the value for a node (element) in XML. It creates the node if it is not present and sets the value.并不能作为树的显示的!
      

  7.   

    UpdateModel.reset();//这个应该是树的显示吧
      

  8.   

    UpdateModel.reset(); 
    不是,这是通过update方法将修改的数值保存到数据库中!
    现在这个问题已经解决了! 
    selectedNode.setLabel(updateName); 
    这样就能动态更改名字了!
    非常感谢  :
    lihui_shine  (浪尖赏花)  的帮忙!
      

  9.   

    lihui_shine  分都给你了! hoho