ShieldUI 将不接受更新的属性
ShieldUI will not accept updated attributes
我有以下代码:
protected void SetChartToItem(Item item)
{
ShieldChart1 = new ShieldChart();
ShieldChart1.Width = Unit.Percentage(100);
ShieldChart1.Height = Unit.Pixel(400);
ShieldChart1.CssClass = "chart";
ShieldChart1.PrimaryHeader.Text = item.name;
ShieldChart1.TooltipSettings.AxisMarkers.Enabled = true;
ShieldChart1.TooltipSettings.AxisMarkers.Mode = ChartXYMode.XY;
ShieldChart1.TooltipSettings.AxisMarkers.Width = new Unit(1);
ShieldChart1.TooltipSettings.AxisMarkers.ZIndex = 3;
ChartAxisX axisX = new ChartAxisX();
axisX.Title.Text = "Times";
ShieldChart1.Axes.Add(axisX);
ChartAxisY axisY = new ChartAxisY();
axisY.Title.Text = "Prices";
ShieldChart1.Axes.Add(axisY);
ShieldChart1.Axes.SetDirty();
}
以及以下代码:
<shield:ShieldChart ID="ShieldChart1" Width="700px" Height="380px" runat="server" OnTakeDataSource="ShieldChart1_TakeDataSource" CssClass="chart">
<PrimaryHeader Text="TestHeader"></PrimaryHeader>
<ExportOptions AllowExportToImage="true" AllowPrint="false" />
<Axes>
<shield:ChartAxisX>
<Title Text="Time"></Title>
</shield:ChartAxisX>
<shield:ChartAxisY>
<Title Text="Price"></Title>
</shield:ChartAxisY>
</Axes>
<DataSeries>
<shield:ChartLineSeries DataFieldY="Volume" DataFieldX="Timer" CollectionAlias="Volume">
<Settings EnablePointSelection="true">
<PointMark>
<ActiveSettings>
<PointSelectedState DrawWidth="4" DrawRadius="4" />
</ActiveSettings>
</PointMark>
</Settings>
</shield:ChartLineSeries>
<shield:ChartLineSeries DataFieldY="Price" DataFieldX="Timer" CollectionAlias="Price">
<Settings EnablePointSelection="true">
<PointMark>
<ActiveSettings>
<PointSelectedState DrawWidth="4" DrawRadius="4" />
</ActiveSettings>
</PointMark>
</Settings>
</shield:ChartLineSeries>
</DataSeries>
</shield:ShieldChart>
当我调用 SetChartToItem 时,当我看着它一步一步完成时它看起来好像有效,但是当页面呈现时,实际的 ShieldChart 没有任何变化。更多可能有用的信息是当我删除行时 ShieldChart1 = new ShieldChart();那么整个 ShieldChart 就会消失。
我相信有两种方法可以尝试解决这个问题。
一种方法是重新创建图表,如本示例所示:
https://demos.shieldui.com/aspnet/rangebar-chart/related-charts
您可以查看 asp.net 选项卡。
另一种方法是在托管图表的嵌套面板中重新创建控件集合(并在此之前清除它)。然后,在特定事件中,您可以重新创建图表、清除容器的控件集合并添加新实例。
我花了 3 个月的时间,但我弄清楚了问题出在哪里。我让一些图表在 'Page_Load' 函数中自行构建。对此的解决方案是确保仅当页面是回发页面时每个人都完成,这不包含在我上面的代码中但为我解决了这个问题。
我有以下代码:
protected void SetChartToItem(Item item)
{
ShieldChart1 = new ShieldChart();
ShieldChart1.Width = Unit.Percentage(100);
ShieldChart1.Height = Unit.Pixel(400);
ShieldChart1.CssClass = "chart";
ShieldChart1.PrimaryHeader.Text = item.name;
ShieldChart1.TooltipSettings.AxisMarkers.Enabled = true;
ShieldChart1.TooltipSettings.AxisMarkers.Mode = ChartXYMode.XY;
ShieldChart1.TooltipSettings.AxisMarkers.Width = new Unit(1);
ShieldChart1.TooltipSettings.AxisMarkers.ZIndex = 3;
ChartAxisX axisX = new ChartAxisX();
axisX.Title.Text = "Times";
ShieldChart1.Axes.Add(axisX);
ChartAxisY axisY = new ChartAxisY();
axisY.Title.Text = "Prices";
ShieldChart1.Axes.Add(axisY);
ShieldChart1.Axes.SetDirty();
}
以及以下代码:
<shield:ShieldChart ID="ShieldChart1" Width="700px" Height="380px" runat="server" OnTakeDataSource="ShieldChart1_TakeDataSource" CssClass="chart">
<PrimaryHeader Text="TestHeader"></PrimaryHeader>
<ExportOptions AllowExportToImage="true" AllowPrint="false" />
<Axes>
<shield:ChartAxisX>
<Title Text="Time"></Title>
</shield:ChartAxisX>
<shield:ChartAxisY>
<Title Text="Price"></Title>
</shield:ChartAxisY>
</Axes>
<DataSeries>
<shield:ChartLineSeries DataFieldY="Volume" DataFieldX="Timer" CollectionAlias="Volume">
<Settings EnablePointSelection="true">
<PointMark>
<ActiveSettings>
<PointSelectedState DrawWidth="4" DrawRadius="4" />
</ActiveSettings>
</PointMark>
</Settings>
</shield:ChartLineSeries>
<shield:ChartLineSeries DataFieldY="Price" DataFieldX="Timer" CollectionAlias="Price">
<Settings EnablePointSelection="true">
<PointMark>
<ActiveSettings>
<PointSelectedState DrawWidth="4" DrawRadius="4" />
</ActiveSettings>
</PointMark>
</Settings>
</shield:ChartLineSeries>
</DataSeries>
</shield:ShieldChart>
当我调用 SetChartToItem 时,当我看着它一步一步完成时它看起来好像有效,但是当页面呈现时,实际的 ShieldChart 没有任何变化。更多可能有用的信息是当我删除行时 ShieldChart1 = new ShieldChart();那么整个 ShieldChart 就会消失。
我相信有两种方法可以尝试解决这个问题。 一种方法是重新创建图表,如本示例所示: https://demos.shieldui.com/aspnet/rangebar-chart/related-charts 您可以查看 asp.net 选项卡。
另一种方法是在托管图表的嵌套面板中重新创建控件集合(并在此之前清除它)。然后,在特定事件中,您可以重新创建图表、清除容器的控件集合并添加新实例。
我花了 3 个月的时间,但我弄清楚了问题出在哪里。我让一些图表在 'Page_Load' 函数中自行构建。对此的解决方案是确保仅当页面是回发页面时每个人都完成,这不包含在我上面的代码中但为我解决了这个问题。