|
1 | | -# How to load data on demand using events in wpf treegrid? |
2 | | -This example illustrates how to load data on demand using events in wpf treegrid |
| 1 | +# How to load data on demand using events in WPF TreeGrid |
| 2 | + |
| 3 | +This example illustrates how to load data on demand using events in [WPF TreeGrid](https://www.syncfusion.com/wpf-controls/treegrid) (SfTreeGrid). |
| 4 | + |
| 5 | +`SfTreeGrid` supports to load the data in on-demand through [SfTreeGrid.RequestTreeItems](https://help.syncfusion.com/cr/wpf/Syncfusion.UI.Xaml.TreeGrid.SfTreeGrid.html#Syncfusion_UI_Xaml_TreeGrid_SfTreeGrid_RequestTreeItems) event. `RequestTreeItems` event is triggered at the time of loading and when user expand any node at runtime. SfTreeGrid gets the root and leaf nodes through this event handler. |
| 6 | + |
| 7 | +`TreeGridRequestTreeItemsEventArgs.ParentItem` denotes the data object looking for its child nodes. If it is null, it denotes SfTreeGrid requesting root nodes. |
| 8 | + |
| 9 | +In the below example SfTreeGrid is populated through `SfTreeGrid.RequestTreeItems` instead of setting [SfTreeGrid.ItemsSource](https://help.syncfusion.com/cr/wpf/Syncfusion.UI.Xaml.TreeGrid.SfTreeGrid.html#Syncfusion_UI_Xaml_TreeGrid_SfTreeGrid_ItemsSource). |
| 10 | + |
| 11 | +``` csharp |
| 12 | +ViewModel viewModel = new ViewModel(); |
| 13 | +treeGrid.RequestTreeItems += TreeGrid_RequestTreeItems; |
| 14 | + |
| 15 | +private void TreeGrid_RequestTreeItems(object sender, TreeGridRequestTreeItemsEventArgs args) |
| 16 | +{ |
| 17 | + |
| 18 | + if (args.ParentItem == null) |
| 19 | + { |
| 20 | + args.ChildItems = viewModel.Employees.Where(x => x.ReportsTo == -1); |
| 21 | + } |
| 22 | + |
| 23 | + else |
| 24 | + { |
| 25 | + EmployeeInfo employee = args.ParentItem as EmployeeInfo; |
| 26 | + |
| 27 | + if (employee != null) |
| 28 | + { |
| 29 | + args.ChildItems = viewModel.GetEmployees().Where(x => x.ReportsTo == employee.ID); |
| 30 | + } |
| 31 | + } |
| 32 | +} |
| 33 | +``` |
| 34 | + |
| 35 | +``` csharp |
| 36 | +public class EmployeeInfo |
| 37 | +{ |
| 38 | + int _id; |
| 39 | + string _firstName; |
| 40 | + string _lastName; |
| 41 | + private string _title; |
| 42 | + double? _salary; |
| 43 | + int _reportsTo; |
| 44 | + |
| 45 | + public string FirstName |
| 46 | + { |
| 47 | + get { return _firstName; } |
| 48 | + set { _firstName = value; } |
| 49 | + } |
| 50 | + |
| 51 | + public string LastName |
| 52 | + { |
| 53 | + get { return _lastName; } |
| 54 | + set { _lastName = value; } |
| 55 | + } |
| 56 | + |
| 57 | + public int ID |
| 58 | + { |
| 59 | + get { return _id; } |
| 60 | + set { _id = value; } |
| 61 | + } |
| 62 | + |
| 63 | + public string Title |
| 64 | + { |
| 65 | + get { return _title; } |
| 66 | + set { _title = value; } |
| 67 | + } |
| 68 | + |
| 69 | + public double? Salary |
| 70 | + { |
| 71 | + get { return _salary; } |
| 72 | + set { _salary = value; } |
| 73 | + } |
| 74 | + |
| 75 | + public int ReportsTo |
| 76 | + { |
| 77 | + get { return _reportsTo; } |
| 78 | + set { _reportsTo = value; } |
| 79 | + } |
| 80 | +} |
| 81 | +``` |
| 82 | + |
| 83 | +``` csharp |
| 84 | +public class ViewModel |
| 85 | +{ |
| 86 | + public ViewModel() |
| 87 | + { |
| 88 | + this.Employees = this.GetEmployees(); |
| 89 | + } |
| 90 | + private ObservableCollection<EmployeeInfo> _employees; |
| 91 | + |
| 92 | + public ObservableCollection<EmployeeInfo> Employees |
| 93 | + { |
| 94 | + get { return _employees; } |
| 95 | + set { _employees = value; } |
| 96 | + } |
| 97 | + |
| 98 | + public ObservableCollection<EmployeeInfo> GetEmployees() |
| 99 | + { |
| 100 | + ObservableCollection<EmployeeInfo> employeeDetails = new ObservableCollection<EmployeeInfo>(); |
| 101 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Ferando", LastName = "Joseph", Title = "Management", Salary = 2000000, ReportsTo = -1, ID = 2 }); |
| 102 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "John", LastName = "Adams", Title = "Accounts", Salary = 2000000, ReportsTo = -1, ID = 3 }); |
| 103 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Thomas", LastName = "Jefferson", Title = "Sales", Salary = 300000, ReportsTo = -1, ID = 4 }); |
| 104 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Andrew", LastName = "Madison", Title = "Marketing", Salary = 4000000, ReportsTo = -1, ID = 5 }); |
| 105 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Ulysses", LastName = "Pierce", Title = "HumanResource", Salary = 1500000, ReportsTo = -1, ID = 6 }); |
| 106 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Jimmy", LastName = "Harrison", Title = "Purchasing", Salary = 200000, ReportsTo = -1, ID = 7 }); |
| 107 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Ronald", LastName = "Fillmore", Title = "Production", Salary = 2800000, ReportsTo = -1, ID = 8 }); |
| 108 | + //Management |
| 109 | +
|
| 110 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Andrew", LastName = "Fuller", ID = 9, Salary = 1200000, ReportsTo = 2, Title = "Vice President" }); |
| 111 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Janet", LastName = "Leverling", ID = 10, Salary = 1000000, ReportsTo = 2, Title = "GM" }); |
| 112 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Steven", LastName = "Buchanan", ID = 11, Salary = 900000, ReportsTo = 2, Title = "Manager" }); |
| 113 | + |
| 114 | + //Accounts |
| 115 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Nancy", LastName = "Davolio", ID = 12, Salary = 850000, ReportsTo = 3, Title = "Accounts Manager" }); |
| 116 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Margaret", LastName = "Peacock", ID = 13, Salary = 700000, ReportsTo = 3, Title = "Accountant" }); |
| 117 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Michael", LastName = "Suyama", ID = 14, Salary = 700000, ReportsTo = 3, Title = "Accountant" }); |
| 118 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Robert", LastName = "King", ID = 15, Salary = 650000, ReportsTo = 3, Title = "Accountant" }); |
| 119 | + |
| 120 | + //Sales |
| 121 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Laura", LastName = "Callahan", ID = 16, Salary = 900000, ReportsTo = 4, Title = "Sales Manager" }); |
| 122 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Anne", LastName = "Dodsworth", ID = 17, Salary = 800000, ReportsTo = 4, Title = "Sales Representative" }); |
| 123 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Albert", LastName = "Hellstern", ID = 18, Salary = 750000, ReportsTo = 4, Title = "Sales Representative" }); |
| 124 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Tim", LastName = "Smith", ID = 19, Salary = 700000, ReportsTo = 4, Title = "Sales Representative" }); |
| 125 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Justin", LastName = "Brid", ID = 20, Salary = 700000, ReportsTo = 4, Title = "Sales Representative" }); |
| 126 | + |
| 127 | + //Back Office |
| 128 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Caroline", LastName = "Patterson", ID = 21, Salary = 800000, ReportsTo = 5, Title = "Receptionist" }); |
| 129 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Xavier", LastName = "Martin", ID = 22, Salary = 700000, ReportsTo = 5, Title = "Mail Clerk" }); |
| 130 | + |
| 131 | + //HR |
| 132 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Laurent", LastName = "Pereira", ID = 23, Salary = 900000, ReportsTo = 6, Title = "HR Manager" }); |
| 133 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Syed", LastName = "Abbas", ID = 24, Salary = 650000, ReportsTo = 6, Title = "HR Assistant" }); |
| 134 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Amy", LastName = "Alberts", ID = 25, Salary = 650000, ReportsTo = 6, Title = "HR Assistant" }); |
| 135 | + |
| 136 | + //Purchasing |
| 137 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Pamela", LastName = "Ansman-Wolfe", ID = 26, Salary = 600000, ReportsTo = 7, Title = "Purchase Manager" }); |
| 138 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Michael", LastName = "Blythe", ID = 27, Salary = 550000, ReportsTo = 7, Title = "Store Keeper" }); |
| 139 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "David", LastName = "Campbell", ID = 28, Salary = 450000, ReportsTo = 7, Title = "Store Keeper" }); |
| 140 | + |
| 141 | + //Production |
| 142 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Jillian", LastName = "Carson", ID = 29, Salary = 600000, ReportsTo = 8, Title = "Production Manager" }); |
| 143 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Shu", LastName = "Ito", ID = 30, Salary = 550000, ReportsTo = 8, Title = "Production Engineer" }); |
| 144 | + employeeDetails.Add(new EmployeeInfo() { FirstName = "Stephen", LastName = "Jiang", ID = 31, Salary = 450000, ReportsTo = 8, Title = "Production Engineer" }); |
| 145 | + |
| 146 | + return employeeDetails; |
| 147 | + } |
| 148 | +} |
| 149 | +``` |
0 commit comments