所以我正在开发一个项目,要求我使用分析服务多维数据集中的数据进行下拉列表。这就是我通过谷歌搜索得出的结果。
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>
答案 0 :(得分:0)
我认为你的问题可能是因为你的MDX没有返回任何值。虽然返回的单元格将列出区域,但区域名称将在一种标题中(类似于SQL列名称或字段名称)。
调试代码,看看数据表中的内容。没有行?
数据表的主体不包含任何值(数字或文本),因为您已说过{} ON COLUMNS
。您可以通过更改连接到.DataTextField
的内容来获得所需信息,但还有其他方法。
ADOMD提供了一种查询OLAP多维数据集的方法,以查找它具有的维度,每个维度中的成员,而不询问任何值(在某种程度上,您可以询问它是否有文本,但没有数字!) 。例如,您可以要求它列出可用度量的名称,而不询问度量的值是什么。在这种情况下,您需要ADOMD Catalog
对象。如果您提出要求,它会在Region级别列出Product维度的所有成员。