Kendo ui 如何使用以前上载的文件填充剑道上载

Kendo ui 如何使用以前上载的文件填充剑道上载,kendo-ui,Kendo Ui,我正在使用剑道用户界面文件上传的MVC,它的工作非常好。在我的编辑页面上,我想显示以前从创建页面上载的文件。为了视觉上的一致性,我想在我的编辑页面上重新使用upload小部件,这样用户就可以使用“删除”功能,或者如果他们选择的话,可以添加其他文件。上传小部件是否支持此功能 谢谢 一些额外的搜索给了我一个我没有寻找的答案——根据和,Telerik不支持用以前上传的文档预先填充上传小部件 我想出了一个办法 基本上,您需要模仿上传控件生成的HTML,并使用一点JavaScript将每个项目连接起来。我

我正在使用剑道用户界面文件上传的MVC,它的工作非常好。在我的编辑页面上,我想显示以前从创建页面上载的文件。为了视觉上的一致性,我想在我的编辑页面上重新使用upload小部件,这样用户就可以使用“删除”功能,或者如果他们选择的话,可以添加其他文件。上传小部件是否支持此功能


谢谢

一些额外的搜索给了我一个我没有寻找的答案——根据和,Telerik不支持用以前上传的文档预先填充上传小部件

我想出了一个办法

基本上,您需要模仿上传控件生成的HTML,并使用一点JavaScript将每个项目连接起来。我最初将HTML呈现为隐藏,然后在初始化剑道上载控件后,将HTML列表附加到剑道创建的父容器中

这是我的MVC视图:

@if(Model.Attachments!=null&&Model.Attachments.Count>0)
{
    @foreach(Model.Attachments中的var文件) {
  • 上传 @文件名 去除
  • }
}
下面是JavaScript(注意,它是由CoffeeScript生成的):

var$fileList,$files,item,\u fn,\u i,\u len;
$fileList=$(“#现有文件”);
如果($fileList.length>0){
$(“.k-upload”).append($fileList);
$files=$(“.k-file”);
_fn=功能(项目){
var$item、fileId、filename;
$item=$(item);
fileId=$item.data(“att id”);
文件名=[
{
名称:fileId
}
];
返回$item.data(“文件名”,文件名);
};
对于(_i=0,_len=$files.length;_i<_len;_i++){
item=$files[_i];
_fn(项目1);
}
$fileList.show();
}

你可以找到我深入讨论这个话题的地方。我希望这对你有帮助

所以,我意识到这是一个相当古老的问题,但我最近发现了如何可靠地做到这一点。虽然这里的另一个答案肯定会显示文件,但它并没有真正将其连接到任何事件(特别是“删除”事件)。此外,我想我更愿意让剑道做所有真正的脏活,而不是手动设置所有这些

注意,这仅适用于文件上载未设置为自动同步的情况。如果您使用自动上传功能,您可以在剑道文档中找到以下示例:

不管怎样,让我们假设我们有一个文件输入,我们已经输入到剑道上传中:


$(文档).ready(函数(){
var$upload=$(“#文件”);
var allowMultiple=Boolean($upload.attr(“multiple”);
$upload.kendoUpload({
多重:allowMultiple,
showFileList:true,
自动上载:false
});
}
然后,我们只需要将有关文件的信息获取到jQuery中,我喜欢将其插入隐藏字段中的JSON字符串中,但您可以按照自己的意愿执行

下面是一个使用Mvc HtmlHelpers和Newtonsoft的JSON.NET的示例(我不使用Razor,但您应该了解其基本思想):

if(Model.Attachments.Count>0)
{
var files=Model.Attachments.Select(x=>new{name=x.FileName,extension=x.FileExtension,size=x.size});
var filesJson=JsonConvert.serialized对象(文件);
Render(Html.Hidden(“现有文件”,filesJson));
}
注意,这里的格式非常重要。我们将与Kendo期望的JavaScript对象的结构相匹配:

{
relatedInput:sourceInput,

文件名:[{/自提出此问题以来,已将其添加到选项中

退房

它只在异步模式下工作。

试试这个

            @(Html.Kendo().Upload()
              .Name("files")
              .Async(a => a
                  .Save("SaveFile", "Home")
                  .Remove("RemoveFile", "Home")
                  .AutoUpload(true))
              .Files(files =>
              {
                  foreach (var file in Model.FundRequest.Files)
                  {
                          files.Add().Name(file.Name).Extension(Path.GetExtension(file.Name)).Size((long)file.SizeKb * 1024);
                   }

              }))

我的模型引用了我的“FundRequest”对象,该对象有一个“File”对象列表,所以我只是循环遍历每个“File”和添加。

谢谢您的帖子!请不要在帖子中使用签名/标语。您的用户框将被视为您的签名,您可以使用您的个人资料发布您喜欢的任何关于自己的信息。哦,很抱歉!谢谢您删除它。@D您知道我们如何在编辑模式下在剑道网格中实现这一点吗?您好,谢谢您的帮助ood回答。请帮助。我如何在绿色主题上显示初始化文件,如剑道异步?(.k-file-success)@valverij知道如何在剑道网格中以编辑模式实现此目的吗?@minamorsali如果你想这样做,你需要逐个添加文件,替换
var file=upload.\u enqueueFile(名称,{relatedInput:sourceInput,fileNames:files});upload.\u fileAction(file,“remove”);
带有for循环。类似于此:@minamorsali Sommeting类似于此:
for(var i=0;i