如果仅添加一个数据值,AjaxControlToolkit PieChart 图形不会呈现
AjaxControlToolkit PieChart graphic does not render if only one data value is added
我从后面的代码动态输入数据:
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "1",
Data = count1
});
它应该通过使用开关来反映 1-10 的评级数量(我没有显示整个开关,因为那样太麻烦了)。所以在这种情况下,如果一个人给出 1 的评分,则 count1 = 1,我希望饼图反映这一点,但控件仍然是空白的,并且在拐角处一直只有 1,但图例是还在。
这是一个错误还是我遗漏了什么?
更新:这是通过评级 1 - 10 并将该特定评级的数量添加到图表的开关:
for (int i = 1; i <= 10; i++)
{
switch (i)
{
case 1:
if (count1 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "1",
Data = count1
});
}
break;
case 2:
if (count2 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "2",
Data = count2
});
}
break;
case 3:
if (count3 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "3",
Data = count3
});
}
break;
case 4:
if (count4 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "4",
Data = count4
});
}
break;
case 5:
if (count5 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "5",
Data = count5
});
}
break;
case 6:
if (count6 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "6",
Data = count6
});
}
break;
case 7:
if (count7 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "7",
Data = count7
});
}
break;
case 8:
if (count8 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "8",
Data = count8
});
}
break;
case 9:
if (count9 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "9",
Data = count9
});
}
break;
case 10:
if (count10 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "10",
Data = count10
});
}
break;
}
您做的一切都正确,但是当系列中只有一个值时,PieChart 不会生成有效的 SVG 标记,因此您看不到任何结果。
我运行也遇到了这个问题。我的修复只是检查数据表中的 1 行,如果是,则将另一个项目添加到图表中,值为 1,标签为空白。这不是很漂亮,但在我的情况下,图表中只有 1 项的情况很少见,所以我只是解释说当只有 1 项时它可能无法正确显示。我知道这是一个糟糕的修复,但我希望他们能在以后的版本中修复这个问题。
if(dt.Rows.Count == 1)
{
pieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "",
Data = 1
});
}
我从后面的代码动态输入数据:
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "1",
Data = count1
});
它应该通过使用开关来反映 1-10 的评级数量(我没有显示整个开关,因为那样太麻烦了)。所以在这种情况下,如果一个人给出 1 的评分,则 count1 = 1,我希望饼图反映这一点,但控件仍然是空白的,并且在拐角处一直只有 1,但图例是还在。
这是一个错误还是我遗漏了什么?
更新:这是通过评级 1 - 10 并将该特定评级的数量添加到图表的开关:
for (int i = 1; i <= 10; i++)
{
switch (i)
{
case 1:
if (count1 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "1",
Data = count1
});
}
break;
case 2:
if (count2 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "2",
Data = count2
});
}
break;
case 3:
if (count3 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "3",
Data = count3
});
}
break;
case 4:
if (count4 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "4",
Data = count4
});
}
break;
case 5:
if (count5 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "5",
Data = count5
});
}
break;
case 6:
if (count6 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "6",
Data = count6
});
}
break;
case 7:
if (count7 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "7",
Data = count7
});
}
break;
case 8:
if (count8 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "8",
Data = count8
});
}
break;
case 9:
if (count9 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "9",
Data = count9
});
}
break;
case 10:
if (count10 > 0)
{
PieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "10",
Data = count10
});
}
break;
}
您做的一切都正确,但是当系列中只有一个值时,PieChart 不会生成有效的 SVG 标记,因此您看不到任何结果。
我运行也遇到了这个问题。我的修复只是检查数据表中的 1 行,如果是,则将另一个项目添加到图表中,值为 1,标签为空白。这不是很漂亮,但在我的情况下,图表中只有 1 项的情况很少见,所以我只是解释说当只有 1 项时它可能无法正确显示。我知道这是一个糟糕的修复,但我希望他们能在以后的版本中修复这个问题。
if(dt.Rows.Count == 1)
{
pieChart1.PieChartValues.Add(new AjaxControlToolkit.PieChartValue
{
Category = "",
Data = 1
});
}