|
<SfGantt ID="GanttExport" TValue="GanttData" Height="450px" Width="700px"
Toolbar="@(new List<string>(){ "Add", "Edit", "Update", "Delete", "Cancel", "ExpandAll", "CollapseAll"})">
<SfDataManager AdaptorInstance="@typeof(CustomAdaptor)" Adaptor="Adaptors.CustomAdaptor"></SfDataManager>
//..
<GanttTaskFields Id="Id" Name="Name" StartDate="Sdate" EndDate="Edate" Progress="Progress"
ParentID="ParentId"></GanttTaskFields>
</SfGantt>
@code {
// Implementing custom adaptor by extending the DataAdaptor class
public class CustomAdaptor : DataAdaptor
{
MasterContext db = new MasterContext();
// Performs data Read operation
public override object Read(DataManagerRequest dm, string key = null)
{
IEnumerable<GanttData> DataSource = db.GanttData;
int count = DataSource.Cast<GanttData>().Count();
return dm.RequiresCounts ? new DataResult() { Result = DataSource, Count = count } : (object)DataSource;
}
// Performs Add/Update/Delete operation
public override object BatchUpdate(DataManager dm, object changedRecords, object addedRecords, object deletedRecords, string keyField, string key, int? dropIndex)
{
List<GanttData> addRecord = addedRecords as List<GanttData>;
List<GanttData> changed = changedRecords as List<GanttData>;
List<GanttData> deleteRecord = deletedRecords as List<GanttData>;
if (changed != null)
{
for (var i = 0; i < changed.Count(); i++)
{
var value = changed[i];
GanttData result = db.GanttData.Where(or => or.Id == value.Id).FirstOrDefault();
result.Id = value.Id;
result.Name = value.Name;
result.Sdate = value.Sdate;
result.Edate = value.Edate;
result.Progress = value.Progress;
db.SaveChanges();
}
}
if (deleteRecord != null)
{
for (var i = 0; i < deleteRecord.Count(); i++)
{
db.GanttData.Remove(db.GanttData.Where(or => or.Id == deleteRecord[i].Id).FirstOrDefault());
db.SaveChanges();
}
}
if (addRecord != null)
{
for (var i = 0; i < addRecord.Count(); i++)
{
db.GanttData.Add(addRecord[i] as GanttData);
db.SaveChanges();
}
}
return (new { addedRecords = addRecord, changedRecords = changed, deletedRecords = deleteRecord });
}
}
}
|
|
<SfGantt ID="GanttExport" TValue="Table" Height="450px" Width="700px" Resources="@ResourceCollection">
<GanttColumns>
</GanttColumns>
<GanttTaskFields Id="Id" Name="Name" StartDate="Sdate" EndDate="Edate" Progress="Progress"
ParentID="ParentId" ResourceInfo="ResourceId"></GanttTaskFields>
<GanttResourceFields Id="ResourceId" Name="ResourceName"></GanttResourceFields>
</SfGantt>
public override object Read(DataManagerRequest dm, string key = null)
{
List<GanttData>
list = new List<GanttData>
();
IEnumerable<Table>
DataSource = db.Table;
var db_GanttData = DataSource.ToList();
foreach (var data in db_GanttData)
{
GanttData obj = new GanttData();
obj.Id = data.Id;
obj.Name = data.Name;
obj.Sdate = data.Sdate;
obj.Edate = data.Edate;
obj.ResourceId = GetResourceValues(data.ResourceId);
obj.ParentId = data.ParentId;
obj.Progress = data.Progress;
list.Add(obj);
}
int count = DataSource.Cast
<Table>
().Count();
return dm.RequiresCounts ? new DataResult() { Result = DataSource, Count = count } : (object)DataSource;
}
public List
<object>
GetResourceValues(string resourcearr)
{
List<object>
arr = new List<object>
();
if (resourcearr != null)
{
string[] resourceid = resourcearr.Split(',');
foreach (var id in resourceid)
{
string[] temp = id.Split('-');
if (temp.Length > 1)
{
TaskResource currentresource = new TaskResource();
currentresource.ResourceId = temp[0];
arr.Add(currentresource);
}
else
{
arr.Add(temp[0]);
}
}
}
return arr;
} |
Excuse me Sir,
I've tryed to run your example, but it seems not to work properly.
It's the same result I get in my app.
Could you please send me the trick to make your example work?
Thank you in advance!