telerik - Telerik RadHtmlChart 饼图错误
问题描述
我正在尝试使用 RadHtmlChart 饼图,但出现以下错误:
无法从“Y”属性的字符串表示“StatCount”创建“System.Nullable”类型的对象。
如果我对 asp:Chart 使用相同的 SqlDataSource,它会按预期工作。所以我的猜测是这是 RadHtmlChart 特有的——但这只是一个猜测。
查询 (MS SQL Server 2012) 返回以下内容:
+----------------------+-----------------+
| stat | StatCount |
+----------------------+-----------------+
| Closed | 4067 |
+----------------------+-----------------+
| Pending Assignment | 1 |
+----------------------+-----------------+
| QA Ready | 600 |
+----------------------+-----------------+
| In QA | 400 |
+----------------------+-----------------+
| Assigned | 4946 |
+----------------------+-----------------+
这是我用来获取这些数据的 SqlDataSource:
<asp:SqlDataSource
ID="sdsAssnmtStats"
runat="server"
ConnectionString='<%$ ConnectionStrings:DefaultConnection %>'
SelectCommand="SELECT s.stat ,cast(case s.stat when 'Pending Assignment' then count(a.clmNo) when 'Assigned' then count(a.clmNo) when 'QA Ready' then count(a.clmNo) when 'In QA' then count(a.clmNo) when 'Closed' then count(a.clmNo) else 0 end as nvarchar) as StatCount FROM assnmts a inner join assnmtStats astats on a.assnmtIdPk = astats.assnmtIdFk inner join stats s on astats.aStatId = s.statIdPk inner join repAssnmts ra on a.assnmtIdPk = ra.assnmtIdFk inner join aspnetusers anu on ra.repId = anu.Id inner join clients c on a.clientIdFk = c.clientIdPk inner join carrs on a.carrierId = carrs.carrIdPk inner join (SELECT a2.assnmtIdPk, MAX(astats2.asCrtdDt) as MaxDate FROM assnmts a2 INNER JOIN assnmtStats astats2 on a2.assnmtIdPk = astats2.assnmtIdFk GROUP BY a2.assnmtIdPk) mdt on a.assnmtIdPk = mdt.assnmtIdPk and astats.asCrtdDt = mdt.MaxDate inner join (select a3.assnmtIdPk, MAX(ra2.raCrtdDt) as MaxRepDate from assnmts a3 inner join repAssnmts ra2 on a3.assnmtIdPk = ra2.assnmtIdFk group by a3.assnmtIdPk) mrepdt on a.assnmtIdPk = mrepdt.assnmtIdPk and ra.raCrtdDt = mrepdt.MaxRepDate group by s.stat">
</asp:SqlDataSource>
这是 RadHtmlChart:
<telerik:RadHtmlChart runat="server" ID="rhc_assnmtStats" Transitions="true" Skin="Default" DataSourceID="sdsAssnmtStats" >
<PlotArea>
<Series>
<telerik:PieSeries StartAngle="90">
<LabelsAppearance Position="OutsideEnd"></LabelsAppearance>
<SeriesItems>
<telerik:PieSeriesItem Exploded="true" Name="stat" Visible="true" VisibleInLegend="true" Y="StatCount" />
</SeriesItems>
</telerik:PieSeries>
</Series>
</PlotArea>
<Legend>
<Appearance Position="Right" Visible="true"></Appearance>
</Legend>
<ChartTitle Text="Assignment Counts by Status">
<Appearance Align="Center" Position="Top"></Appearance>
</ChartTitle>
</telerik:RadHtmlChart>
这是我使用的 asp:Chart 标记,它按预期工作:
<asp:Chart ID="assnmtStats" runat="server" DataSourceID="sdsAssnmtStats">
<Titles>
<asp:Title Font="Times New Roman, 14pt, style=Bold, Italic" Name="AssnmtStatsTitle" Text="Assignment Counts by Status"></asp:Title>
</Titles>
<Series>
<asp:Series Name="Series1" ChartType="Pie" XValueMember="stat" YValueMembers="StatCount" YValueType="Int32" Legend="assnmtStatsLegend" IsValueShownAsLabel="true"></asp:Series>
</Series>
<ChartAreas>
<asp:ChartArea Name="assnmtStatsChartArea" Area3DStyle-Enable3D="true"></asp:ChartArea>
</ChartAreas>
<Legends>
<asp:Legend Name="assnmtStatsLegend" Alignment="Center"></asp:Legend>
</Legends>
</asp:Chart>
我需要做什么才能让 RadHtmlChart 工作?
这是我在 Visual Studio 2017 中创建的 ASP.net C# WebForms 应用程序。
解决方案
我收到了 Telerik 的解决方案。我希望这可以帮助任何其他在将其网站上的演示从条形图转换为饼图时遇到困难的人。
当数据绑定图表系列时,您需要将其 DataFieldY 属性设置为指向您要使用的字段名称,而不是填充其 SeriesItems 集合。
这是工作解决方案:
<telerik:RadHtmlChart runat="server" ID="rhc_assnmtStats" Transitions="true" Skin="Default" DataSourceID="sdsAssnmtStats" >
<PlotArea>
<Series>
<telerik:PieSeries StartAngle="90" NameField="stat" DataFieldY="StatCount">
<LabelsAppearance Position="OutsideEnd"></LabelsAppearance>
</telerik:PieSeries>
</Series>
</PlotArea>
<Legend>
<Appearance Position="Right" Visible="true"></Appearance>
</Legend>
<ChartTitle Text="Assignment Counts by Status">
<Appearance Align="Center" Position="Top"></Appearance>
</ChartTitle>
</telerik:RadHtmlChart>
推荐阅读
- reactjs - 反应 useEffect 钩子无限循环
- reactjs - 一个数组的一个输出和嵌套在其中的数组的不同输出
- python - 在 docker 容器中运行时进程突然堆积内存
- angular - 角反应形式材料日期选择器手动输入格式DD/MM/YYYY
- javascript - 打字时如何使表格中所有单元格的生长高度相同?
- c++ - OpenGL - Reading cursor position correctly but cant draw line from it
- docker - 如何在 Docker 环境的根目录 (/) 中创建挂载配置
- c# - 使用 ArrayList 将代码从 VB.NET 转换为 C#
- python - spyder.ini 中是否有调整内存最大值的选项?
- npm - socket.io 设置没有同站点属性的跨站点 cookie