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