GridView未显示DataTable中的所有列

时间:2014-10-03 13:25:34

标签: c# asp.net

我有一个由MDX查询填充的DataTable。我想将DataTable绑定到GridView并显示返回的所有数据。我的GridView定义如下:

<asp:GridView ID = "gvResults" runat="server" AutoGenerateColumns="true" />

调用MDX查询如下:

DataTable mdxResults = new DataTable();
CellSet cellSet;

AdomdCommand command = new AdomdCommand();

strCommand = "SELECT NON EMPTY({[Measures].[Assets Distinct Count], [Measures].[Value]}) " + 
"ON COLUMNS, NONEMPTY({[Organization].[Org Id].[Org Id]*[Location].[Loc Id].[Loc Id]}) " + 
"ON ROWS FROM [database]"

command.Connection = _CurrentConnection;
command.CommandText = strCommand;
cellSet = command.ExecuteCellSet();
AdomdDataAdapter dataAdapter = new AdomdDataAdapter(command);
objDataAdapter.Fill(mdxResults);

可以从MDX查询生成的DataTable示例:

Organization   Location      Assets     Value
Org A          Los Angeles   12         320000
Org B          San Jose      6          21000

资产和价值是来自MDX查询的汇总度量。

在重命名列后,DataTable将绑定到GridView:

gvResults.DataSource = mdxResults;
gvResults.DataBind();

绑定DataTable后,只有一部分列显示在GridView中。具体来说,将显示除MDX查询中的Measure列之外的所有列。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

问题最终是MDX查询将为DataTable填充类型为Object的测量结果,而AutoGenerateColumns不支持。为了纠正这个问题,我在此处使用解决方案在绑定到GridView之前更改DataType: How To Change DataType of a DataColumn in a DataTable?