[cs]
public object Get()
{
var data = GetUrlDataSource();
return Json(new { result = data, count = data.Count });
}
[cshtml]
@{
List<Resource> ResourceCollection = new List<Resource>(){
new Resource() { id= 1, text= "Project Manager", value= "Project Manager" },
//...
};
}
<ej-tree-grid id="TreeGridContainer"
//...>
<e-datamanager id="myData" url="/api/TreeGrid" adaptor="WebApiAdaptor"></e-datamanager>
<e-tree-grid-columns>
//...
<e-tree-grid-column field="resources" header-text="Resources" edit-type="Dropdown" drop-down-data="ResourceCollection">
<ej-drop-down-list>
<e-drop-down-list-fields text="text" value="value" />
</ej-drop-down-list>
</e-tree-grid-column>
</e-tree-grid-columns>
</ej-tree-grid>
|
//edit params
@{
var DropDownList = new Syncfusion.EJ2.DropDowns.DropDownList() {
DataSource = new Syncfusion.EJ2.DataManager() {
Url = "/api/Employee", Adaptor = "WebApiAdaptor" },
Query = "new ej.data.Query()",
Fields = new Syncfusion.EJ2.DropDowns.DropDownListFieldSettings() {
Value = "Priority", Text = "Priority" } };
}
<ejs-treegrid id="TreeGrid" dataSource="@ViewBag.data" idMapping="TaskId"
parentIdMapping='ParentId' height="270" treeColumnIndex="1" >
<e-treegrid-editSettings allowAdding="true" allowDeleting="true"
allowEditing="true" mode="Row"></e-treegrid-editSettings>
<e-treegrid-columns>
<e-treegrid-column field="TaskId" headerText="Task ID" isPrimaryKey="true" ></e-treegrid-column>
<e-treegrid-column field="Priority" headerText="Priority" width="120"
editType="dropdownedit" edit="new {@params = DropDownList }"></e-treegrid-column>
</e-treegrid-columns>
</ejs-treegrid>
public object Get()
{
var data2 = new PList().PListList(); //dropdown's data
return new { Items = data2, Count = data2.Count() };
}
public static List<PList> list = new List<PList>();
public class PList
{
public string Priority { get; set; }
public List<PList> PListList()
{
list.Add(new PList { Priority = "UltraCritical" });
list.Add(new PList { Priority = "Critiical" });
list.Add(new PList { Priority = "Normal" });
list.Add(new PList { Priority = "High" });
list.Add(new PList { Priority = "Low" });
return list;
}
} |
<ejs-treegrid id="TreeGrid" dataSource="@ViewBag.data"
idMapping="TaskId" parentIdMapping='ParentId'
actionBegin="begin" actionComplete="complete">
<e-treegrid-columns>
<e-treegrid-column field="TaskId" headerText="Task ID" isPrimaryKey="true" textAlign="Right" width="90"></e-treegrid-column>
<e-treegrid-column field="Priority" headerText="Priority" width="90" editType="dropdownedit"
edit="new {@params = DropDownList }"></e-treegrid-column></ejs-treegrid>
<script>
var flag = true;
function begin(args) {
if (args.requestType == "beginEdit") {
var params = this.grid.columns[2].edit.params.query.params;
// checking whether id is already present or not then adding it as params
if (params.length == 0) {
this.columns[2].edit.params.query.addParams("id", args.rowData.TaskId);
// adding row's primary key value as params to dropdown
}
else if (params.length) {
for (var i = 0; i < params.length; i++) {
if (params[i]["key"] == "id") {
flag = false;
}
}
if (flag) {
this.columns[2].edit.params.query.addParams("id", args.rowData.TaskId);
// adding row's primary key value as params to dropdown
}
}
}
}
function complete(args) {
if (args.requestType == "save" || args.requestType == "cancel") {
var params = this.columns[2].edit.params.query.params;
flag = true;
for (var i = 0; i < params.length; i++) {
if (params[i]["key"] == "id") {
params.splice(i,1);
}
}
}
}
</script>
public object Get()
{
var queryString = Request.Query;
// here we can get the parameter
int num = Convert.ToInt32(queryString["id"]);
// based on id value you can return data
---------
return new { Items = data2, Count = data2.Count() };
} |
Thank you very much for the EJ2 sample code.Another question: could the multi-select dropdown control be used as a treegrid column in a similar fashion?
Thank you very much for the EJ2 sample code.Another question: could the multi-select dropdown control be used as a treegrid column in a similar fashion?Never mind this question - it seems I've found an answer:
<ejs-treegrid id="TreeGrid" dataSource="@ViewBag.data"
idMapping="TaskId" parentIdMapping='ParentId' treeColumnIndex="1" >
----------
<e-treegrid-columns>
<e-treegrid-column field="TaskId" headerText="Task ID" isPrimaryKey="true"
textAlign="Right" width="90"></e-treegrid-column>
<e-treegrid-column field="Priority" headerText="Task Name" width="60"
edit="@(new { create = "create", read = "read", write = "write", destroy ="destroy" })">
</e-treegrid-column>
</e-treegrid-columns>
</ejs-treegrid>
<script>
//data for multi select using data manager
var data = new ej.data.DataManager({
url: '/api/Employee',
adaptor: new ej.data.WebApiAdaptor()
});
var multiSelectObj, elem;
function create(args) {
elem = document.createElement('input');
return elem;
}
function read(args) {
return multiSelectObj.value;
}
function destroy(args) {
return multiSelectObj.destroy();
}
function write(args) {
multiSelectObj = new ej.dropdowns.MultiSelect({
dataSource: data,
fields: { value: 'Priority' },
value: Array.isArray(args.rowData["Priority"])? args.rowData["Priority"] :
[args.rowData["Priority"]],
});
multiSelectObj.appendTo(elem);
}
</script>
|
<ejs-treegrid id="TreeGrid" dataSource="@ViewBag.data" idMapping="TaskId"
parentIdMapping='ParentId'
height="270" treeColumnIndex="1" load="load">
----------------
</ejs-treegrid>
function load(args) {
for (var i = 0; i < customFields.length; i++) {
if(customFields[i].FieldType == "string"){
// setting edit template for column based on type
this.columns[i].edit = {
create: function () {
elem = document.createElement('input');
return elem;
},
read: function () {
return multiSelectObj.value;
},
destroy: function () {
return multiSelectObj.destroy();
},
write: function (args) {
multiSelectObj = new ej.dropdowns.MultiSelect({
dataSource: data,
fields: { value: 'Priority' },
value: Array.isArray(args.rowData["Priority"])?
args.rowData["Priority"] :
[args.rowData["Priority"]],
});
multiSelectObj.appendTo(elem);
}
}
}
}
} |
services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy = null; });
} |