RadHTMLChart 在后续页面加载后呈现未定义的 YAxis
RadHTMLChart renders Undefined YAxis after Subsequential Page Loads
我有一个通过模型呈现的 Telerik RadHTMLChart,该模型由 SQLCommand 填充。初始加载时,一切都很好。网格呈现,它看起来像 Telerik 控件一样漂亮。然而,在第二页加载时,假设我单击第 2 或 3 页,网格在顶部填充了一个未定义的 YAXIS。然后 YAXIS 数据呈现在底部。我已经对此进行了调试,但在网上找不到任何关于此的内容。这是我的代码。假设我的 SQL 查询很棒并且效果很好,因为相信我,它确实如此。
For Each recordAboutUserRoles In usageData
If recordAboutUserRoles.usageCount <> 0 Then
Dim barz As New BarSeries
barz.Spacing = 0.4
barz.SeriesItems.Add(recordAboutUserRoles.usageCount, colorTheme.MainThemeColorLightened)
usageGraphByRole.PlotArea.Series.Add(barz)
i += 1
End If
Next
在此处为模型分配数据
Private Function AssignData(ByVal data As SqlCommand) As List(Of RolesByUsageModel)
Dim result As SqlDataReader = data.ExecuteReader
Dim rolesByUsageModelList As New List(Of RolesByUsageModel)
While result.Read
Dim rolesByUsageModel As New RolesByUsageModel
rolesByUsageModel.usageCount = result.GetValue(0)
rolesByUsageModel.roleName = result.GetValue(1)
rolesByUsageModel.pageDefPageName = result.GetValue(2)
rolesByUsageModel.pathUrl = result.GetValue(3)
rolesByUsageModel.usageDetPageName = result.GetValue(4)
rolesByUsageModelList.Add(rolesByUsageModel)
End While
Return rolesByUsageModelList
End Function
这是我的 WebForm 标记。 AxnData:AxnChart 是专有品牌。它只是 Telerik RadHtmlChart 的包装器。除了控件名称没有什么不同。
<AxnData:AxnChart ID="usageGraphByRole" runat="server">
<PlotArea>
<Series>
<telerik:BarSeries>
</telerik:BarSeries>
</Series>
</PlotArea>
<Legend>
<Appearance Visible="false"></Appearance>
</Legend>
<ChartTitle Text="Usage By Role"></ChartTitle>
</AxnData:AxnChart>
这是图表在初始加载时的样子。
后续加载后的图表。
当我在 DevTools 中检查元素时,图表左侧的 "d" 实际上表示未定义。我曾尝试为每个 AXIS 项目命名,但这似乎不起作用。
有人 运行 喜欢这个吗?
总之,全错了。假设在 Page_Load 上调用了 usageGraph。然后调用 DataBound 事件。在 DataBound 事件中,在循环外声明 ChartSeries 对象并在循环内实例化一个新的图表系列项并添加到 ChartSeries 对象。
重要的部分是将所有数据赋值保存在 DataBound 事件中。
Private Sub usageGraph()
usageGraphByRole.PlotArea.YAxis.LabelsAppearance.Visible = True
usageGraphByRole.DataSource = AssignData()
usageGraphByRole.DataBind()
End Sub
Private Sub usageGraphByRole_DataBound(sender As Object, e As EventArgs) 句柄 usageGraphByRole.DataBound
usageGraphByRole.PlotArea.Series.Clear()
Dim barz As New BarSeries()
barz.Name = "Usage By Roles"
'barz.LabelsAppearance.Visible = False
barz.TooltipsAppearance.DataFormatString = "{0} Usage Count, {1}"
For Each recordAboutUserRoles In AssignData()
If recordAboutUserRoles.usageCount <> 0 Then
Dim usageDataItem As New SeriesItem()
usageDataItem.YValue = recordAboutUserRoles.usageCount
barz.Items.Add(usageDataItem)
End If
Next
usageGraphByRole.PlotArea.Series.Add(barz)
End Sub
我有一个通过模型呈现的 Telerik RadHTMLChart,该模型由 SQLCommand 填充。初始加载时,一切都很好。网格呈现,它看起来像 Telerik 控件一样漂亮。然而,在第二页加载时,假设我单击第 2 或 3 页,网格在顶部填充了一个未定义的 YAXIS。然后 YAXIS 数据呈现在底部。我已经对此进行了调试,但在网上找不到任何关于此的内容。这是我的代码。假设我的 SQL 查询很棒并且效果很好,因为相信我,它确实如此。
For Each recordAboutUserRoles In usageData
If recordAboutUserRoles.usageCount <> 0 Then
Dim barz As New BarSeries
barz.Spacing = 0.4
barz.SeriesItems.Add(recordAboutUserRoles.usageCount, colorTheme.MainThemeColorLightened)
usageGraphByRole.PlotArea.Series.Add(barz)
i += 1
End If
Next
在此处为模型分配数据
Private Function AssignData(ByVal data As SqlCommand) As List(Of RolesByUsageModel)
Dim result As SqlDataReader = data.ExecuteReader
Dim rolesByUsageModelList As New List(Of RolesByUsageModel)
While result.Read
Dim rolesByUsageModel As New RolesByUsageModel
rolesByUsageModel.usageCount = result.GetValue(0)
rolesByUsageModel.roleName = result.GetValue(1)
rolesByUsageModel.pageDefPageName = result.GetValue(2)
rolesByUsageModel.pathUrl = result.GetValue(3)
rolesByUsageModel.usageDetPageName = result.GetValue(4)
rolesByUsageModelList.Add(rolesByUsageModel)
End While
Return rolesByUsageModelList
End Function
这是我的 WebForm 标记。 AxnData:AxnChart 是专有品牌。它只是 Telerik RadHtmlChart 的包装器。除了控件名称没有什么不同。
<AxnData:AxnChart ID="usageGraphByRole" runat="server">
<PlotArea>
<Series>
<telerik:BarSeries>
</telerik:BarSeries>
</Series>
</PlotArea>
<Legend>
<Appearance Visible="false"></Appearance>
</Legend>
<ChartTitle Text="Usage By Role"></ChartTitle>
</AxnData:AxnChart>
这是图表在初始加载时的样子。
后续加载后的图表。
当我在 DevTools 中检查元素时,图表左侧的 "d" 实际上表示未定义。我曾尝试为每个 AXIS 项目命名,但这似乎不起作用。
有人 运行 喜欢这个吗?
总之,全错了。假设在 Page_Load 上调用了 usageGraph。然后调用 DataBound 事件。在 DataBound 事件中,在循环外声明 ChartSeries 对象并在循环内实例化一个新的图表系列项并添加到 ChartSeries 对象。
重要的部分是将所有数据赋值保存在 DataBound 事件中。
Private Sub usageGraph()
usageGraphByRole.PlotArea.YAxis.LabelsAppearance.Visible = True
usageGraphByRole.DataSource = AssignData()
usageGraphByRole.DataBind()
End Sub
Private Sub usageGraphByRole_DataBound(sender As Object, e As EventArgs) 句柄 usageGraphByRole.DataBound usageGraphByRole.PlotArea.Series.Clear()
Dim barz As New BarSeries()
barz.Name = "Usage By Roles"
'barz.LabelsAppearance.Visible = False
barz.TooltipsAppearance.DataFormatString = "{0} Usage Count, {1}"
For Each recordAboutUserRoles In AssignData()
If recordAboutUserRoles.usageCount <> 0 Then
Dim usageDataItem As New SeriesItem()
usageDataItem.YValue = recordAboutUserRoles.usageCount
barz.Items.Add(usageDataItem)
End If
Next
usageGraphByRole.PlotArea.Series.Add(barz)
End Sub