我试图在ASP中设置图表控件,只使用内置的图表控件。
它应该工作的方式是,当单击一个按钮时,页面上有一些填充数据的表,并且每个表旁边都是一个Scatter-Chart,应该填充表示该表的数据。我让控件在for语句中运行,为一年中的每个月添加一个点以及它的值。月份为X,值为Y。
我已经检查了我的调试,数据在那里,并且列出了点,但是当页面加载时,图表图像只显示图表的标题,没有任何图形。我觉得这与页面加载有关,但我不确定,也不确定如何合并页面加载函数。或者是否有一个函数我可以调用来渲染图表?我知道这不是图表图像位置的问题,我通过在ASP标记中放置一个点来测试,显示就好了。但由于某种原因,它不会显示我在代码隐藏中插入的点数。
到目前为止我的代码:
<asp:Chart ID="metricsQualityScatter" ImageStorageMode="UseImageLocation" ImageLocation="~/TempImages/ChartPic_#SEQ(300,3)" runat="server" Width="500px" Height="500px">
<Titles>
<asp:Title Text="Metrics Quality Chart"></asp:Title>
</Titles>
<Series>
<asp:Series Name="scatterSeries" ChartArea="qualityChartArea" MarkerSize="10" ChartType="Point">
</asp:Series>
</Series>
<ChartAreas>
<asp:ChartArea Name="qualityChartArea"></asp:ChartArea>
</ChartAreas>
</asp:Chart>
for(int y = 1; y < 13; y++)
{
switch (y)
{
case 1: metricsQualityScatter.Series[0].Points.AddXY("JAN", yValue; break;
case 2: metricsQualityScatter.Series[0].Points.AddXY("FEB", yValue; break;
case 3: metricsQualityScatter.Series[0].Points.AddXY("MAR", yValue; break;
case 4: metricsQualityScatter.Series[0].Points.AddXY("APR", yValue; break;
case 5: metricsQualityScatter.Series[0].Points.AddXY("MAY", yValue; break;
case 6: metricsQualityScatter.Series[0].Points.AddXY("JUN", yValue; break;
case 7: metricsQualityScatter.Series[0].Points.AddXY("JUL", yValue; break;
case 8: metricsQualityScatter.Series[0].Points.AddXY("AUG", yValue; break;
case 9: metricsQualityScatter.Series[0].Points.AddXY("SEP", yValue; break;
case 10: metricsQualityScatter.Series[0].Points.AddXY("OCT", yValue; break;
case 11: metricsQualityScatter.Series[0].Points.AddXY("NOV", yValue; break;
case 12: metricsQualityScatter.Series[0].Points.AddXY("DEC", yValue; break;
}
}
编辑:
好的,所以我现在知道在填充数据之前创建和绘制图像是一个问题。我尝试在我的page_load函数上为If(IsPostBack)使用一堆检查添加一个争论,以确保正在按下正确的视图和按钮来加载该数据,尝试捕获它,但没有骰子。奇怪的是,如果我直接调用填充我的数据的函数并从IsPostBack检查中绘制图形数据,它就可以很好地填充它。但是当我点击应该填充它的实际按钮时,我们又回到空白处。
所以,这不起作用:
if (IsPostBack)
{
string myView = "";
try
{
myView = pageTabs.GetActiveView().ID;
}
catch (Exception ex)
{ }
if (myView == "metricsDataInputView")
{
if(!string.IsNullOrEmpty(currentCategory.Value))
{
metrics_dataFill(currentCategory.Value);
}
}
}
但是这样做了:
if(IsPostBack)
metrics_dataFill("1");
我不知道为什么。我知道currentCategory也有效,因为表填充,但图像保持空白。我想我只需要找到一种方法来在用数据填充之后重新绘制图像。不知道该功能列出的图形为什么。