private void toggleExpanded(int rowindex) { List <AreaOverview.AOPollutantTreeListRow> data = ViewState[COLDATA] as List <AreaOverview.AOPollutantTreeListRow>; AreaOverview.AOPollutantTreeListRow row = data[rowindex]; //toggle expansion row.IsExpanded = !row.IsExpanded; //Load data from database, if not already loaded if (row.HasChildren && row.IsExpanded && !data.Any(r => r.Level == row.Level + 1 && r.ParentCode == row.Code)) { List <string> pollutantCodes = getOrderedPollutantCodes(); MediumFilter.Medium medium = this.ucMediumSelector.SelectedMedium; int pollutantGroupID = Convert.ToInt32(this.cbPollutantGroup.SelectedValue); if (row.Level == 0) { var activities = QueryLayer.AreaOverview.GetPollutantReleaseActivities(SearchFilter, medium, pollutantGroupID, new List <string> { row.SectorCode }, pollutantCodes); addToData(activities); } else if (row.Level == 1) { var subactivities = QueryLayer.AreaOverview.GetPollutantReleaseSubActivities(SearchFilter, medium, pollutantGroupID, new List <string> { row.ActivityCode }, pollutantCodes); addToData(subactivities); } } populateList(false); //do not restart paging }
//Rows will only be shown if parent is expanded (grand-parents must be expanded too) protected void rows_OnItemDataBound(object sender, ListViewItemEventArgs e) { ListViewDataItem dataItem = e.Item as ListViewDataItem; if (dataItem == null) { return; //safe check } int rowindex = dataItem.DataItemIndex; List <AreaOverview.AOPollutantTreeListRow> data = ViewState[COLDATA] as List <AreaOverview.AOPollutantTreeListRow>; AreaOverview.AOPollutantTreeListRow row = data[rowindex]; //Sectors need not to be considered. Will always be visible bool collapsed = false; if (row.Level > 0) { //is sector collapsed? collapsed = !data.Single(d => d.SectorCode == row.SectorCode && d.Level == 0).IsExpanded; if (row.Level > 1 && !collapsed) { //is activity collapsed? collapsed = !data.Single(d => d.ActivityCode == row.ActivityCode && d.Level == 1).IsExpanded; } } dataItem.Visible = !collapsed; }
private void toggleExpanded(int rowindex) { List <AreaOverview.AOPollutantTreeListRow> data = ViewState[COLDATA] as List <AreaOverview.AOPollutantTreeListRow>; AreaOverview.AOPollutantTreeListRow row = data[rowindex]; //toggle expansion row.IsExpanded = !row.IsExpanded; //Load data from database, if not already loaded if (row.HasChildren && row.IsExpanded && !data.Any(r => r.Level == row.Level + 1 && r.ParentCode == row.Code)) { List <string> pollutantCodes = getOrderedPollutantCodes(); int pollutantGroupID = Convert.ToInt32(this.cbPollutantGroup.SelectedValue); if (row.Level == 0) { var activities = QueryLayer.AreaOverview.GetPollutantTransferActivities(SearchFilter, pollutantGroupID, new List <string> { row.SectorCode }, pollutantCodes); addToData(activities); } else if (row.Level == 1) { var subactivities = QueryLayer.AreaOverview.GetPollutantTransferSubActivities(SearchFilter, pollutantGroupID, new List <string> { row.ActivityCode }, pollutantCodes); addToData(subactivities); } } populateList(false); //do not restart paging // notify that content has changed (print) if (ContentChanged != null) { ContentChanged.Invoke(null, EventArgs.Empty); } }