我有一个剑道网格的MVC剃刀形式。 网格有一个非同步图片上传。
@(Html.Kendo().Grid<CraftStore.Models.Catalog>()
.Name("CatalogGrid")
.Columns(columns =>
{
columns.Bound(p => p.CatalogName).Filterable(true).Width(240);
columns.Bound(p => p.CatalogDescription).Filterable(true).Width(340);
columns.Bound(p => p.ModelNumber).Filterable(true).Width(110);
columns.Bound(p => p.SerialNumber).Filterable(true).Width(110);
columns.Bound(p => p.InventoryCount).Filterable(true).Width(110);
columns.Bound(p => p.WebPrice).Title("Price").Format("{0:C}").EditorTemplateName("Currency").Width(110);
columns.Bound(p => p.ImagePath).ClientTemplate("<img height='80' src='" + Url.Content("~/Content/Images/catalog/Products/") + "#=data.ImagePath#' title='#=data.ImagePath#' alt='#=data.CatalogName#' />").EditorTemplateName("Image").Title("Picture").Width(300);
columns.Command(command => command.Destroy()).Width(110);
})
.ToolBar(toolbar =>
{
toolbar.Create();
toolbar.Save();
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Filterable(filterable => filterable
.Extra(false)
.Operators(operators => operators
.ForString(str => str.Clear()
.Contains("Contains")
.StartsWith("Starts with")
.IsEqualTo("Is equal to")
.IsNotEqualTo("Is not equal to"))
.ForNumber(num => num.Clear()
.IsEqualTo("Is equal to")
.IsNotEqualTo("Is not equal to")
.IsGreaterThan("Greater than")
.IsLessThan("Greater than"))
))
.Navigatable()
.Selectable(selectable => selectable.Type(GridSelectionType.Row))
.Scrollable(scrollable =>
{
scrollable.Virtual(true);
scrollable.Height(400);
})
.Events(events =>
{
events.Change("change");
})
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.PageSize(20)
.Model(model =>
{
model.Id(p => p.Id);
}
)
.Events(events =>
{
events.Error("error_handler");
})
.Create("CatalogEditing_Create", "WebCatalog")
.Read("CatalogEditing_Read", "WebCatalog")
.Update("CatalogEditing_Update", "WebCatalog")
.Destroy("CatalogEditing_Destroy", "WebCatalog")
)
)
所有工作得很好! - 图像有文件名的提示...上传和删除工作有很大...
我有图像编辑模板(在查看/共享/ EditorTemplates image.cshtml)
模板是:
@model string
<div style="width:100%">
<div class="section">
@Html.TextBoxFor(model => model, new {@class="k-textbox result-box" })
@(Html.Kendo().Upload()
.Name("files")
.Events(events=>events.Success("OnUploadSuccess"))
.Multiple(false)
.Async(a => a
.Save("Save", "Upload")
.Remove("Remove", "Upload")
.AutoUpload(true)
)
)
</div>
</div>
所述OnUploadSuccess js函数(其在剃刀视图中定义)具有成功函数
<script type="text/javascript">
//file upload scripts
function getFileInfo(e) {
return $.map(e.files, function (file) {
var info = file.name;
// File size is not available in all browsers
if (file.size > 0) {
info += " (" + Math.ceil(file.size / 1024) + " KB)";
}
return info;
}).join(", ");
}
function OnUploadSuccess(e) {
$(".result-box").value = getFileInfo(e);
Model = getFileInfo(e);
}
一切工作正常 - 变量“模式”确实得到了正确的文件名。
现在...
我如何成为网格列的当前值由getFileInfo(E)返回的文件名值???
我想“模式”的工作,但事实并非如此。
Model = getFileInfo(e);
//since this is in a template, I thought it would bind 'Model' to the column
然后,你可以在上面看到,在OnUploadSuccess,我还以为这可以通过使用jQuery来完成:
$(".result-box").value = getFileInfo(e);
jQuery的不查找和设置的值,但命名的ImagePath行的成员从来没有得到结果值。
无论是工作,我不知道如何去得到返回的文件名是列值。
任何帮助表示赞赏。
更新:
好吧,我已经更新了OnUpdateSuccess js函数:
var fn = getFileName(e);
$("#ImagePath").val(fn)
而这个现在更新场 - 但这不是保存在您选项卡出了场或立即点击保存。 在任何护理,旧值将被恢复。
我如何得到它留下来吗? 我想这是那里的MVVM结合将帮助?