You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Kendo UI File Manager添加文件及文件夹重命名功能?

Implementing Rename Functionality in Kendo UI File Manager

Great question! While the Kendo UI File Manager doesn’t come with a built-in rename feature out of the box, you can absolutely add it with custom code that integrates smoothly with the component. Let me walk you through a step-by-step implementation:

1. Add a Rename Button to the Toolbar

First, extend the File Manager’s toolbar to include a custom "Rename" button. You’ll configure this directly in the component’s setup:

$("#filemanager").kendoFileManager({
    toolbar: {
        items: [
            // Keep default built-in actions
            "createFolder",
            "delete",
            // Add your custom rename button
            {
                name: "rename",
                text: "Rename",
                icon: "pencil",
                click: onRenameClick
            }
        ]
    },
    // Rest of your File Manager configuration (dataSource, views, etc.)
});

2. Handle the Rename Click & Edit Flow

Next, write the onRenameClick function to manage the renaming interaction. This will handle selecting items, swapping the name display for an input field, and processing the new name:

function onRenameClick(e) {
    const fileManager = $("#filemanager").data("kendoFileManager");
    const selectedItems = fileManager.select();
    
    // Only allow renaming one item at a time for UX clarity
    if (selectedItems.length !== 1) {
        alert("Please select a single file or folder to rename.");
        return;
    }
    
    const item = selectedItems[0];
    const nameElement = item.find(".k-filemanager-item-name");
    const currentName = nameElement.text().trim();
    
    // Replace the static name text with an editable input
    nameElement.html(`<input type="text" class="k-input" value="${currentName}" style="width: 100%;" />`);
    const input = nameElement.find("input");
    
    // Auto-focus and select the text for quick editing
    input.focus().select();
    
    // Handle confirmation when user presses Enter or clicks away
    input.on("keydown blur", function(e) {
        if (e.type === "blur" || e.keyCode === 13) {
            const newName = $(this).val().trim();
            
            // Validate input: don't proceed if empty or unchanged
            if (!newName || newName === currentName) {
                nameElement.text(currentName);
                return;
            }
            
            // Update the data source and sync with backend
            const dataItem = fileManager.dataSource.get(item.data("uid"));
            dataItem.set("name", newName);
            
            fileManager.dataSource.sync()
                .then(() => {
                    // Update UI with the new name on success
                    nameElement.text(newName);
                })
                .catch(error => {
                    // Revert to original name and show error on failure
                    alert(`Rename failed: ${error.responseJSON?.message || "Unknown server error"}`);
                    nameElement.text(currentName);
                });
            
            input.off("keydown blur");
        }
    });
}

3. Prepare Your Backend to Handle Rename Requests

Your backend API needs to support the update operation triggered by the File Manager’s dataSource sync() call. When the rename is submitted:

  • The component will send a PUT/PATCH request to your configured endpoint with the item’s ID and new name value.
  • Your backend should validate the new name (check for invalid characters, duplicate names in the same directory, permissions, etc.).
  • Update the file/folder name on the server and return a success response or the updated item data.

Key Tips for a Polished Implementation

  • Input Validation: Add extra checks for invalid characters (like / \ : * ? " < > |) to match OS file system rules.
  • Styling: Tweak the input field’s CSS to match the File Manager’s design if needed (the k-input class already aligns with Kendo’s styling).
  • Keyboard Support: Consider adding Escape key support to cancel the rename and revert to the original name.

内容的提问来源于stack exchange,提问作者MohammadJavad Seyyedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:47:33