ExtJs 3.4 eachChild 使用实例

ExtJs 3.4  TreeNode的eachChild方法 使用实例

下面的实例,用于每次加载树,树节点重新生成,虽然选中节点path相同但是当执行修改/删除时,树重新加载,之前选中的树节点已经不能能使用expandPath或者getNodeById获取:

思路在于,依次遍历子节点,递归调用:需要注意的是,只有展开expanded==true的节点,childNodes属性才有值.hasChildNodes()方法只是依据树节点+来进行判断.

function getNode(query_panel, tree, nodeId, nodePath, expand, select, rootNode) {
    if (rootNode.hasChildNodes()) {
        if (nodePath.startsWith(rootNode.getPath())) {
            rootNode.expanded ? null : rootNode.expand();//关键这一句,不然无法获取子节点,虽然hasChildNodes()返回true
            rootNode.eachChild(function (r) {
                if (r.id == nodeId) {
                    expand ? (r.hasChildNodes() ? r.expand() : null) : null;
                    select ? (r.isSelected() ? null : r.select()) : null;
                    if (query_panel && query_panel.setCurNode && typeof (query_panel.setCurNode) == 'function') {
                        query_panel.setCurNode(r);
                    }
                    return false;
                }
                else {
                    if (nodePath.startsWith(r.getPath())) {
                        return getNode(query_panel, tree, nodeId, nodePath, expand, select, r);
                    }
                }
            });
        }
    }
}

其中query_panel关键在于

query_panel.setCurNode

存放已找到的node节点;

nodeId/nodePath:树重新加载之前选中的节点;

expand/select:新节点的状态,是否展开/是否选中;

rootNode:树的根节点

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ExtJS 3.4 中实现批量图片上传可以通过以下步骤: 1. 创建一个文件上传表单 可以使用 Ext.form.Panel 组件创建一个包含文件上传字段的表单,例如: ``` var formPanel = new Ext.form.Panel({ renderTo: 'upload-form', fileUpload: true, items: [{ xtype: 'filefield', name: 'image', fieldLabel: 'Select an image', labelWidth: 100, allowBlank: false, buttonText: 'Browse...' }] }); ``` 2. 处理上传请求 在表单提交时,需要处理上传请求并将文件发送到服务器。可以使用 Ext.form.action.Submit 类来处理请求,例如: ``` formPanel.getForm().submit({ url: 'upload.php', // 上传文件的服务器端处理脚本 waitMsg: 'Uploading your image...', success: function(form, action) { Ext.Msg.alert('Success', 'Your image was uploaded successfully.'); }, failure: function(form, action) { Ext.Msg.alert('Failed', action.result.msg); } }); ``` 其中,url 参数为上传文件的服务器端处理脚本地址,waitMsg 参数为上传过程中显示的等待消息,success 和 failure 分别为上传成功和失败时的回调函数。 3. 处理上传文件 在服务器端处理上传文件时,可以使用 PHP、Java、Node.js 等语言和框架来实现。以下是一个 PHP 的示例代码: ``` <?php $uploadDir = 'uploads/'; $uploadFile = $uploadDir . basename($_FILES['image']['name']); if (move_uploaded_file($_FILES['image']['tmp_name'], $uploadFile)) { echo json_encode(array('success' => true)); } else { echo json_encode(array('success' => false, 'msg' => 'Failed to upload image.')); } ?> ``` 其中,$uploadDir 为上传文件保存的目录,$uploadFile 为上传文件的完整路径。move_uploaded_file 函数用于将上传的临时文件移动到目标位置。最后,使用 json_encode 函数将上传结果以 JSON 格式返回给客户端。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sword_happy

您的鼓励亦是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值