|
<div id="TreeGrid"></div>
<script>
var data = new ej.data.DataManager({
url: 'http://localhost:49442/Orders',
adaptor: new ej.data.ODataV4Adaptor(),
crossDomain: true
});
var treegrid = new ej.treegrid.TreeGrid({
dataSource: data,
allowPaging: true,
idMapping: 'TaskId',
parentIdMapping: 'ParentId',
treeColumnIndex: 1,
toolbar: ['Add', 'Edit', 'Delete', 'Update', 'Cancel'],
editSettings: { allowEditing: true, allowAdding: true,
allowDeleting: true, mode: 'Row', newRowPosition: 'Child' },
columns: [
{ field: 'TaskId', isPrimaryKey: true, headerText: 'Task ID', width: 120 },
{ field: 'TaskName', width: 140, headerText: 'TaskName' },
{ field: 'Duration', width: 140, headerText: 'Duration' }
]
});
treegrid.appendTo('#TreeGrid');
</script>
[EnableQuery]
public IQueryable<TreeData> Get(ODataQueryOptions opts)
{
if (tree.Count == 0)
{
tree = TreeData.GetSelfData().ToList();
}
var data = tree.AsQueryable();
var count = data.Count();
//perform filter
if (opts.Filter != null)
data = opts.Filter.ApplyTo(data, new ODataQuerySettings()).Cast<TreeData>();
if (opts.Skip != null)
data = opts.Skip.ApplyTo(data, new ODataQuerySettings()); //perform skip
if (opts.Top != null)
data = opts.Top.ApplyTo(data, new ODataQuerySettings()); //perform take
return data.AsQueryable();
}
//perform editing
public TreeData Patch([FromODataUri]int key, [FromBody]Delta<TreeData> patch)
{
TreeData data = tree.Where(p => p.TaskId == key).FirstOrDefault();
patch.Patch(data);
return data;
}
////using inherited class for adding new record public HttpResponseMessage Post(parentClass value)
{
TreeData val = value.taskData;
var i = 0;
//For Loop for Finding the parent record and setting it's "HasChildMapping"
(here it is "isParent") to true
for (; i < tree.ToList().Count; i++)
{
if (tree.ToList()[i].TaskId == val.ParentId)
{
if (tree.ToList()[i].isParent == null)
{
tree.ToList()[i].isParent = true;
}
break;
}
}
tree.Add(val);
return Request.CreateResponse(HttpStatusCode.OK, value);
}
//perform delete
public HttpResponseMessage Delete([FromODataUri]int key)
{
TreeData data = tree.Where(p => p.TaskId == key).FirstOrDefault();
if (data != null)
{
tree.Remove(data);
}
else
{
Request.CreateResponse(HttpStatusCode.NotFound);
}
return Request.CreateResponse(HttpStatusCode.OK, "Removed");
} |