ADOMD.Net - Bug when enumerating levels?
- From: "Peter Kenyon" <p.kenyon.no.spam@xxxxxxxxxxxxxxx>
- Date: Thu, 5 May 2005 17:20:49 +1200
An application I am developing needs to display the measures and levels in
each hierarchy in a cube, so I use code similar to that below to enumerate
the various CubeDef properties.
For some reason, if I enumerate the Measures before the dimension and
hierarchy objects, some hierarchies appear to have their Level objects
sorted in alphabetical order instead of the order they are defined on the
server.
By shifting the code to enumerate Measures to the end, the problem is
avoided. I wonder if other people have struck this problem?
Applying the latest hotfix for ADOMD.NET does not make any difference to
this behaviour.
Peter
// Doing this first puts some LevelCollections out of order!
TreeNode nodeMeasures = null;
foreach(Microsoft.AnalysisServices.AdomdClient.Measure m in
cubeDef.Measures)
{
if(nodeMeasures == null)
{
nodeMeasures = new TreeNode("Totals", 2, 2);
nodeMeasures.NodeFont = treeFont;
treeView.Nodes.Insert(0, nodeMeasures);
}
int imgIndex = 2;
TreeNode nodeMeasure = nodeMeasures.Nodes.Add(m.Caption);
nodeMeasure.ImageIndex = imgIndex;
nodeMeasure.SelectedImageIndex = imgIndex;
nodeMeasure.NodeFont = treeFont;
}
foreach(Microsoft.AnalysisServices.AdomdClient.Dimension dim in
cubeDef.Dimensions)
{
if(dim.DimensionType != DimensionTypeEnum.Measure)
{
TreeNode nodeDim = treeView.Nodes.Add(dim.Caption);
nodeDim.ImageIndex = 0;
nodeDim.SelectedImageIndex = 0;
if(dim.Hierarchies.Count <= 1)
{
int levelIcon = 3;
foreach(Microsoft.AnalysisServices.AdomdClient.Level level in
dim.Hierarchies[0].Levels)
{
if(level.LevelType != LevelTypeEnum.All)
{
TreeNode nodeLevel = nodeDim.Nodes.Add(level.Caption);
nodeLevel.ImageIndex = levelIcon;
nodeLevel.SelectedImageIndex = levelIcon;
if(levelIcon < 13)
levelIcon++;
}
}
}
else
{
foreach(Microsoft.AnalysisServices.AdomdClient.Hierarchy hier in
dim.Hierarchies)
{
TreeNode nodeHier = nodeDim.Nodes.Add(hier.Name);
nodeHier.ImageIndex = 1;
nodeHier.SelectedImageIndex = 1;
int levelIcon = 3;
foreach(Microsoft.AnalysisServices.AdomdClient.Level level in
hier.Levels)
{
if(level.LevelType != LevelTypeEnum.All)
{
TreeNode nodeLevel = nodeHier.Nodes.Add(level.Caption);
nodeLevel.Tag = ogsl;
nodeLevel.ImageIndex = levelIcon;
nodeLevel.SelectedImageIndex = levelIcon;
if(levelIcon < 13)
levelIcon++;
}
}
}
}
}
}
.
- Follow-Ups:
- Re: ADOMD.Net - Bug when enumerating levels?
- From: Akshai Mirchandani [MS]
- Re: ADOMD.Net - Bug when enumerating levels?
- Prev by Date: Re: XMLA and datasources
- Next by Date: Re: ADOMD.Net - Bug when enumerating levels?
- Previous by thread: XMLA and datasources
- Next by thread: Re: ADOMD.Net - Bug when enumerating levels?
- Index(es):