|
[HttpPost]
public void Post([FromBody]OrganizationDetails employee)
{
db.AddEmployee(employee);
} |
|
[HttpDelete("{id}")]
public void Delete(int id)
{
db.DeleteEmployee(id);
} |
|
[HttpPut]
public object Put([FromBody]OrganizationDetails employee)
{
db.UpdateEmployee(employee);
return employee;
} |
|
<SfTreeView @ref="tree" TValue="Employee">
<TreeViewFieldsSettings TValue="Employee" Id="Id" Text="Name" ParentID="ParentId" HasChildren="HasTeam" Expanded="IsExpanded">
<SfDataManager Url="api/Default" Adaptor="Adaptors.WebApiAdaptor" CrossDomain="true"></SfDataManager>
</TreeViewFieldsSettings>
<TreeViewEvents TValue="Employee" NodeClicked="nodeClicked"></TreeViewEvents>
<SfContextMenu @ref="menu" Target="#treeview" Items="@MenuItems">
<ContextMenuEvents ItemSelected="MenuSelect"></ContextMenuEvents>
</SfContextMenu>
</SfTreeView> |
load on demand (Lazy load), by default. It reduces the bandwidth size when consuming huge data. It loads first level nodes initially, and when parent node is expanded, loads the child nodes based on the ParentID/Child member. |
[HttpGet]
public object Get()
{
// Get the DataSource from Database
var data = db.GetAllEmployees().ToList();
var queryString = Request.Query;
if (queryString.Keys.Contains("$filter"))
{
StringValues Skip;
StringValues Take;
int skip = (queryString.TryGetValue("$skip", out Skip)) ? Convert.ToInt32(Skip[0]) : 0;
int top = (queryString.TryGetValue("$top", out Take)) ? Convert.ToInt32(Take[0]) : data.Count();
string filter = string.Join("", queryString["$filter"].ToString().Split(' ').Skip(2)); // get filter from querystring
data = data.Where(d => d.ParentId.ToString() == filter).ToList();
return data.Skip(skip).Take(top);
}
else
{
data = data.Where(d => d.ParentId == null).ToList();
return data;
}
} |