Index.cshtml
<div>
<ejs-grid id="Grid" load="load" queryCellInfo="queryCellInfo" actionComplete="complete" allowPaging="true" toolbar="@(new List<string>() { "Add", "Edit", "Cancel", "Update" })">
<e-grid-editSettings allowAdding="true" allowDeleting="true" mode="Dialog"></e-grid-editSettings>
<e-grid-columns>
<e-grid-column field="OrderID" headerText="Order ID" isPrimaryKey="true" width="150"></e-grid-column>
<e-grid-column field="CustomerID" headerText="CustomerID" width="150"></e-grid-column>
<e-grid-column field="file" headerText="File" type="string" template="#template" edit="@(new {create="fileCreate", read="fileRead", destroy="fileDestroy", write="fileWrite" })" width="120"></e-grid-column>
</e-grid-columns>
</ejs-grid>
</div>
<script id="template" type="text/x-template">
<a rel='nofollow' href=""></a>
</script>
<script>
var file;
var elem;
var richText;
var rte;
function queryCellInfo(args) {
if (args.column.field === 'file') {
if (args.data.file) {
var anchotEle = args.cell.getElementsByTagName('a')[0];
anchotEle.innerText = args.data.file.name;
anchotEle.onclick = function click(args) {
args.target.setAttribute("rel='nofollow' href", "http://localhost:63371/Home/Download?filename=" + args.target.innerText);
};
}
}
}
function complete(args) {
if (args.requestType === 'add') {
args.form.setAttribute('enctype', 'multipart/form-data');
args.form.setAttribute('encoding', 'multipart/form-data');
}
}
function fileCreate() {
elem = document.createElement('input');
return elem;
}
function fileRead(args) {
return (file) ? file : uploadObj.filesData;
}
function fileDestroy() {
uploadObj.destroy();
}
function fileWrite(args) {
uploadObj = new ej.inputs.Uploader({
files: (args.requestType === 'beginEdit') ? [args.rowData.file] : ['']
});
uploadObj.appendTo(elem)
}
function load() {
this.dataSource = new ej.data.DataManager({
url: "/Home/UrlDatasource",
insertUrl: "/Home/Save",
updateUrl: "/Home/Update",
adaptor: new custom
})
}
class custom extends ej.data.UrlAdaptor {
processResponse (data, ds, query, xhr, request, changes) {
request.data = JSON.stringify(data);
return ej.data.UrlAdaptor.prototype.processResponse.call(this, data, ds, query, xhr, request, changes)
}
insert(dm, data, tableName) {
var fd = new FormData();
for (var prop of data.file) {
fd.append('UploadFiles', prop.rawFile);
}
fd.append('OrderID', data.OrderID);
fd.append('CustomerID', data.CustomerID);
// data.File = fd;
return {
url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,
type: "POST",
data: fd,
contentType: null
}
}
};
</script> |
|
[HomeController.cs]
public IActionResult Update(int OrderID, string CustomerID, IList<IFormFile> chunkFile, IList<IFormFile> UploadFiles) {
long size = 0;
if (ModelState.IsValid)
{
}
try
{
foreach (var file in UploadFiles)
{
var filename = ContentDispositionHeaderValue
.Parse(file.ContentDisposition)
.FileName
.Trim('"');
var folders = filename.Split('/');
var uploaderFilePath = hostingEnv.WebRootPath;
// for Directory upload
if (folders.Length > 1)
{
for (var i = 0; i < folders.Length - 1; i++)
{
var newFolder = uploaderFilePath + $@"\{folders[i]}";
Directory.CreateDirectory(newFolder);
uploaderFilePath = newFolder;
filename = folders[i + 1];
}
}
size += file.Length;
OrdersDetails val = OrdersDetails.GetAllRecords().Where(or => or.OrderID == OrderID).FirstOrDefault();
val.OrderID = OrderID;
val.CustomerID = CustomerID;
val.file = new OrdersDetails.File() { name = filename, onlinePath = uploaderFilePath + $@"\{filename}", size = size, type = '.' + filename.Split('.')[1] };
filename = uploaderFilePath + $@"\{filename}";
.... }
}
catch (Exception e)
{
....
}
}
|
Index.cshtml
<div>
<ejs-grid id="Grid" load="load" queryCellInfo="queryCellInfo" actionComplete="complete" allowPaging="true" toolbar="@(new List<string>() { "Add", "Edit", "Cancel", "Update" })">
<e-grid-editSettings allowAdding="true" allowDeleting="true" allowEditing="true" mode="Dialog"></e-grid-editSettings>
<e-grid-columns>
<e-grid-column field="OrderID" headerText="Order ID" isPrimaryKey="true" width="150"></e-grid-column>
<e-grid-column field="CustomerID" headerText="CustomerID" width="150"></e-grid-column>
<e-grid-column field="file" headerText="File" type="string" template="#template" edit="@(new {create="fileCreate", read="fileRead", destroy="fileDestroy", write="fileWrite" })" width="120"></e-grid-column>
</e-grid-columns>
</ejs-grid>
</div>
<script id="template" type="text/x-template">
<a rel='nofollow' href=""></a>
</script>
<script>
var file;
var elem;
var richText;
var rte;
function queryCellInfo(args) {
if (args.column.field === 'file') {
if (args.data.file) {
var anchotEle = args.cell.getElementsByTagName('a')[0];
anchotEle.innerText = args.data.file.name;
anchotEle.onclick = function click(args) {
args.target.setAttribute("rel='nofollow' href", "http://localhost:63371/Home/Download?filename=" + args.target.innerText);
};
}
}
}
function complete(args) {
if (args.requestType === 'add') {
args.form.setAttribute('enctype', 'multipart/form-data');
args.form.setAttribute('encoding', 'multipart/form-data');
}
// refresh the grid manually in order to reflect the changed uploader value in grid. if (args.requestType === 'save' && args.action === "edit") {
var gridInstance = document.getElementById('Grid').ej2_instances[0]; //Grid Instance
gridInstance.refresh();
}
}
function fileCreate() {
elem = document.createElement('input');
return elem;
}
function fileRead(args) {
return (file) ? file : uploadObj.filesData;
}
function fileDestroy() {
uploadObj.destroy();
}
function fileWrite(args) {
uploadObj = new ej.inputs.Uploader({
files: (args.requestType === 'beginEdit') ? [args.rowData.file] : ['']
});
uploadObj.appendTo(elem)
}
function load() {
this.dataSource = new ej.data.DataManager({
url: "/Home/UrlDatasource",
insertUrl: "/Home/Save",
updateUrl: "/Home/Update",
removeUrl: "Home/Delete",
adaptor: new custom
})
}
class custom extends ej.data.UrlAdaptor {
processResponse (data, ds, query, xhr, request, changes) {
request.data = JSON.stringify(data);
return ej.data.UrlAdaptor.prototype.processResponse.call(this, data, ds, query, xhr, request, changes)
}
update(dm, data, tableName) { //update operation
var fd = new FormData();
for (var prop of tableName.file) {
fd.append('UploadFiles', prop.rawFile);
}
fd.append('OrderID', tableName.OrderID);
fd.append('CustomerID', tableName.CustomerID);
// data.File = fd;
return {
url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,
type: "POST",
data: fd,
contentType: null
}
}
};
</script> |
<div>
<ejs-grid id="Grid" load="load" locale="de-DE" queryCellInfo="queryCellInfo" actionComplete="complete" allowPaging="true" toolbar="@(new List<string>() { "Add", "Edit", "Delete", "Cancel", "Update" })">
<e-grid-editSettings allowAdding="true" allowDeleting="true" allowEditing="true" mode="Dialog"></e-grid-editSettings>
<e-grid-columns>
</e-grid-columns>
</ejs-grid>
</div>
<script>
ej.base.L10n.load({
'de-DE': {
'grid': {
'EmptyRecord': 'Keine Aufzeichnungen angezeigt',
'SaveButton': 'speichern',
'CancelButton' : 'Stornieren'
},
}
});
</script>
|
|