|
Index.js
{
headerText: 'Upload',width: 150, edit: {
create: function(){
elem = document.createElement('input');
return elem;
},
read: function(args) {
debugger;
readfile = uploadObj.filesData[0].rawFile instanceof File ? uploadObj.filesData : readfile;
return readfile;
},
destroy: function() {
uploadObj.destroy();
},
write: function(args){
uploadObj = new ej.inputs.Uploader({
asyncSettings: {
saveUrl: 'https://aspnetmvc.syncfusion.com/services/api/uploadbox/Save',
removeUrl: 'https://aspnetmvc.syncfusion.com/services/api/uploadbox/Remove'
},
removing: function (args) {
args.postRawFile = false;
},
});
uploadObj.appendTo(elem);
}
}
} |
|
ej.base.enableRipple(true);
var gridData = require('./data');
var grid = new ej.grids.Grid({
dataSource: gridData,
queryCellInfo: queryCellInfo,
editSettings: { allowEditing: true, allowAdding: true, allowDeleting: true },
allowPaging: true,
toolbar: ['Add', 'Edit', 'Delete', 'Update', 'Cancel'],
columns: [
{
field: 'OrderID', isPrimaryKey: true, headerText: 'Order ID', textAlign: 'Right',width: 140
},
{
field: 'CustomerID', headerText: 'Customer ID',
width: 140
},
{
field: 'Freight', headerText: 'Freight', textAlign: 'Right', editType: 'numericedit',
width: 140, format: 'C2'
},
{
headerText: 'Upload',field:'Image', width: 150, edit: {
//defining the cell edit template for the image column
create: function(){
elem = document.createElement('input');
return elem;
},
read: function(args) {
// return the obtained base64 string of the image
return strm;
},
destroy: function() {
uploadObj.destroy();
},
write: function(args){
uploadObj = new ej.inputs.Uploader({
asyncSettings: {
saveUrl: 'https://aspnetmvc.syncfusion.com/services/api/uploadbox/Save',
removeUrl: 'https://aspnetmvc.syncfusion.com/services/api/uploadbox/Remove'
},
// binding success and uploader events for the uploader
success: onUploadSuccess,
failure: onUploadFailure,
});
uploadObj.appendTo(elem);
}
}
}
],
});
grid.appendTo('#Grid');
function queryCellInfo (args) {
if (args.column.field === "Image") {
// displaying the image store in the grid dataSource
args.cell.setAttribute('aria-label', 'image')
args.cell.innerText = '';
var img = new Image();
img.src = args.data.Image;
img.classList.add ('test');
img.style.width='30px';
img.style.height='30px';
args.cell.appendChild(img);
}
}
var strm;
function onUploadSuccess(args) {
if (args.operation === 'upload') {
// after successful upload getting the base64 string of the image
strm = getBase64(args.file.rawFile);
}
}
function onUploadFailure(args) {
console.log('File failed to upload');
}
function getBase64(file) {
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function () {
strm = reader.result;
};
reader.onerror = function (error) {
console.log('Error: ', error);
};
} |
|
Index.cshtml
@page
@model IndexModel
@{
ViewData["Title"] = "Home page";
}
@Html.AntiForgeryToken()
<ejs-grid id="Grid" dataSource=@Model.DataSource queryCellInfo="queryCellInfo" allowPaging="true" toolbar="@( new List<object>() {"Add","Edit","Delete","Update","Cancel"})">
<e-grid-editsettings allowAdding="true" allowDeleting="true" allowEditing="true" ></e-grid-editsettings> <e-grid-columns>
<e-grid-column field="OrderID" headerText="Order ID" isPrimaryKey="true" textAlign="Right" width="120"></e-grid-column>
<e-grid-column field="CustomerID" headerText="Customer ID" width="150"></e-grid-column>
<e-grid-column field="OrderDate" headerText="Order Date" customFormat="@(new { type ="dateTime", format="MM/dd/yyyy hh:mm:ss a" })" width="170"></e-grid-column>
<e-grid-column field="CustomerName" headerText="Customer Name" textAlign="Right" width="120"></e-grid-column>
<e-grid-column field="City" headerText="City" width="150"></e-grid-column>
<e-grid-column field="Image" headerText="Image" edit="@(new {create = "create", read = "read", destroy = "destroy", write = "write"})" width="150"></e-grid-column>
</e-grid-columns>
</ejs-grid>
<script>
var uploadObj;
var elem;
function create() {
elem = document.createElement('input');
return elem;
}
function read(args) {
return strm;
}
function destroy() {
uploadObj.destroy();
}
function write(args) {
uploadObj = new ej.inputs.Uploader({
asyncSettings: {
saveUrl: 'https://aspnetmvc.syncfusion.com/services/api/uploadbox/Save',
removeUrl: 'https://aspnetmvc.syncfusion.com/services/api/uploadbox/Remove'
},
success: onUploadSuccess,
failure: onUploadFailure,
});
uploadObj.appendTo(elem);
}
function queryCellInfo(args) {
if (args.column.field === "Image") {
args.cell.setAttribute('aria-label', 'image')
args.cell.innerText = '';
var img = new Image();
img.src = args.data.Image;
img.classList.add('test');
img.style.width = '30px';
img.style.height = '30px';
args.cell.appendChild(img);
}
}
var strm;
function onUploadSuccess(args) {
if (args.operation === 'upload') {
strm = getBase64(args.file.rawFile);
}
}
function onUploadFailure(args) {
console.log('File failed to upload');
}
function getBase64(file) {
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function () {
strm = reader.result;
};
reader.onerror = function (error) {
console.log('Error: ', error);
};
}
</script>
|
|
<SfGrid AllowPaging="true" DataSource="@Orders" Toolbar="@(new List<string>() { "Add", "Edit", "Delete", "Cancel", "Update" })">
<GridEvents OnActionBegin="BeginHandler" TValue="Order"></GridEvents>
<GridEditSettings AllowEditing="true" AllowDeleting="true" AllowAdding="true"></GridEditSettings>
<GridColumns>
<GridColumn Field=@nameof(Order.OrderID) HeaderText="Order ID" IsPrimaryKey="true" TextAlign="@TextAlign.Center" Width="140"></GridColumn>
<GridColumn Field=@nameof(Order.Freight) HeaderText="Freight" EditType="EditType.NumericEdit" Format="C2" Width="140" TextAlign="@TextAlign.Right"></GridColumn>
<GridColumn Field="Imagesrc" HeaderText="Customer Name" Width="200">
<Template> @*for showing the image in Grid column*@
@{
var imageUrl = (context as Order).Imagesrc;
<div class="image">
<img src="@imageUrl" />
</div>
}
</Template>
<EditTemplate> @*for rendering SfUploader component in EditTemplate for uploading the image during Adding/Editing*@
<SfUploader ID="uploadFiles" AllowedExtensions=".jpg,.png,.jpeg" Multiple="false">
<UploaderEvents FileSelected="Selected" ValueChange="OnChange"></UploaderEvents>
</SfUploader>
</EditTemplate>
</GridColumn>
</GridColumns>
</SfGrid>
@code{
public int? DefaultValue = 100;
public string UploadedFile { get; set; }
public void BeginHandler(ActionEventArgs<Order> Args)
{
if (Args.RequestType == Syncfusion.Blazor.Grids.Action.Save && Args.Action == "Add")
{
//Args.Data.OrderID = DefaultValue++; //set the default value while adding.
//save the file name / url in grid datasource. You can generate the byte and store here.
Args.Data.Imagesrc = "scripts/Images/Employees/"+UploadedFile;
} else if (Args.RequestType == Syncfusion.Blazor.Grids.Action.Save && Args.Action == "Edit")
{
//save the file name / url in grid datasource. You can generate the byte and store here.
Args.Data.Imagesrc = "scripts/Images/Employees/" + UploadedFile;
}
}
public void Selected(SelectedEventArgs Args)
{
UploadedFile = Args.FilesData[0].Name;
}
public void OnChange(UploadChangeEventArgs args)
{
foreach (var file in args.Files)
{
var size = file.FileInfo.Size;
var path = @"./wwwroot/scripts/Images/Employees/" + file.FileInfo.Name;
FileStream filestream = new FileStream(path, FileMode.Create, FileAccess.Write);
file.Stream.WriteTo(filestream);
filestream.Close();
file.Stream.Close();
}
}
. . .
}
|