使用Analysis Cube Data进行下拉列表

时间:2011-06-27 14:13:50

标签: asp.net mdx analysis olap cube

所以我正在开发一个项目,要求我使用分析服务多维数据集中的数据进行下拉列表。这就是我通过谷歌搜索得出的结果。

protected void Page_Load(object sender, EventArgs e)
    {   DataTable dt = new DataTable();
        AdomdConnection conn = new AdomdConnection();
        conn.ConnectionString = "Data Source=RRLR87G4XE-1;Provider=MSOLAP";
        conn.Open();

        AdomdCommand cmd = new AdomdCommand();
        cmd = conn.CreateCommand();
        cmd.Parameters.Add("DimProductRegion", "Bike");
        cmd.CommandText = "SELECT {[Dim Product].[Region].children} ON ROWS, {} ON COLUMNS FROM [Adventure Works]";

        AdomdDataAdapter da = new AdomdDataAdapter(cmd);
        da.Fill(dt);


        ddlRegionFilter.DataSource = dt;
        ddlRegionFilter.DataTextField = "ParameterCaption";
        ddlRegionFilter.DataValueField = "ParameterValue";
        ddlRegionFilter.DataBind();}

但问题是它不会在下拉列表中显示结果。下拉只是空的。

<asp:DropDownList ID="ddlRegionFilter" runat="server" AutoPostBack=true >
</asp:DropDownList>

1 个答案:

答案 0 :(得分:0)

我认为你的问题可能是因为你的MDX没有返回任何值。虽然返回的单元格将列出区域,但区域名称将在一种标题中(类似于SQL列名称或字段名称)。

调试代码,看看数据表中的内容。没有行?

数据表的主体不包含任何值(数字或文本),因为您已说过{} ON COLUMNS。您可以通过更改连接到.DataTextField的内容来获得所需信息,但还有其他方法。

ADOMD提供了一种查询OLAP多维数据集的方法,以查找它具有的维度,每个维度中的成员,而不询问任何值(在某种程度上,您可以询问它是否有文本,但没有数字!) 。例如,您可以要求它列出可用度量的名称,而不询问度量的值是什么。在这种情况下,您需要ADOMD Catalog对象。如果您提出要求,它会在Region级别列出Product维度的所有成员。