private void DControl_DrillDownPerformed(object sender, DrillActionEventArgs e) { if (HasDashboardItem(e.DashboardItemName)) { string itemName = e.DashboardItemName; DashboardDataRow row = e.Values[0]; object value = row[row.Length - 1]; IList <AxisPointTuple> tuple = this.dashboardViewer1.GetAvailableDrillDownValues(itemName); IEnumerable <object> availableValues = tuple.Select(t => t.GetAxisPoint().UniqueValue); if (availableValues.Contains(value)) { this.dashboardViewer1.PerformDrillDown(e.DashboardItemName, value); } } }
private void DControl_DrillUpPerformed(object sender, DrillActionEventArgs e) { if (HasDashboardItem(e.DashboardItemName)) { string itemName = e.DashboardItemName; int level = e.DrillDownLevel; AxisPointTuple tuple = this.dashboardViewer1.GetCurrentDrillDownValues(itemName); if (tuple != null) { AxisPoint point = this.dashboardViewer1.GetCurrentDrillDownValues(itemName).GetAxisPoint(); int l = 0; while (point.Parent != null) { l++; point = point.Parent; } if (level + 1 == l && this.dashboardViewer1.CanPerformDrillUp(itemName)) { this.dashboardViewer1.PerformDrillUp(itemName); } } } }