C# c中Jquery的数组等价物#
我正在尝试在web应用程序中显示饼图。下面是在jquery中显示饼图的数据C# c中Jquery的数组等价物#,c#,jquery,asp.net,C#,Jquery,Asp.net,我正在尝试在web应用程序中显示饼图。下面是在jquery中显示饼图的数据 var piedata = [ { label: "Pending", data: 0 }, { label: "In Progress", data: 65 }, { label: "Cancelled", data: 15 }, { label: "Submitted", data: 110 }, { label: "Open", data: 60 }, { label: "On Hold", data: 57 }
var piedata = [
{ label: "Pending", data: 0 },
{ label: "In Progress", data: 65 },
{ label: "Cancelled", data: 15 },
{ label: "Submitted", data: 110 },
{ label: "Open", data: 60 },
{ label: "On Hold", data: 57 }
];
下面是显示饼图的jquery脚本
<script>
$(document).ready(function () {
var isPostBackObject = $("#hdnIsPostback");
alert(isPostBackObject.val());
if ($("#piechart").length) {
$.plot($("#piechart"), isPostBackObject.val(),
{
series: {
pie: {
show: true
}
},
grid: {
hoverable: true,
clickable: true
},
legend: {
show: false
}
});
function pieHover(event, pos, obj) {
if (!obj)
return;
percent = parseFloat(obj.series.percent).toFixed(2);
$("#hover").html('<span style="font-weight: bold; color: ' + obj.series.color + '">' + obj.series.label + ' (' + percent + '%)</span>');
}
$("#piechart").bind("plothover", pieHover);
}
});
</script>
$(文档).ready(函数(){
var isPostBackObject=$(“#hdnIsPostback”);
警报(isPostBackObject.val());
if($(“#piechart”).长度){
$.plot($(“#piechart”),isPostBackObject.val(),
{
系列:{
馅饼:{
秀:真的
}
},
网格:{
悬停:是的,
可点击:正确
},
图例:{
节目:假
}
});
功能悬停(事件、位置、obj){
如果(!obj)
回来
百分比=parseFloat(对象系列百分比).toFixed(2);
$(“#hover”).html(“+obj.series.label+”(“+percent+”));
}
$(“#piechart”).bind(“plothover”,piehave);
}
});
因为这是在Jquery中,所以这些是硬编码的值。我想在上面设置数据库中的状态ifnormation。如何设置代码隐藏文件中的数据,以便根据db中的值显示饼图
我试着这样设置
var data = new Dictionary<string, string>();
data.Add("Pending", "10");
data.Add("New", "40");
data.Add("Overdue", "50");
hdnIsPostback.Value = new JavaScriptSerializer().Serialize(data);
var data=newdictionary();
数据。添加(“待定”、“10”);
数据。添加(“新”、“40”);
数据。添加(“逾期”、“50”);
hdnIsPostback.Value=newJavaScriptSerializer().Serialize(数据);
这段代码确实显示了饼图,但是像“Pending”/“New”这样的标签不会显示在饼图中。此时将显示“未定义”。如何做到这一点?JavaScriptSerializer将您的字典序列化为包含
键
和值
对([{Key:“Pending”,Value:“0”}…]
)的对象数组,而这绝对不是您所期望的格式
您需要将字典投影到包含标签
和数据
字段的对象数组中:
var pieData = data.Select(x => new
{
label = x.Key,
data = x.Value
}).ToArray();
然后将其序列化为JSON:
hdnIsPostback.Value = new JavaScriptSerializer().Serialize(pieData);
您可以使用普通C#数组或IEnumerable
var isPostBackObject = $("#hdnIsPostback");
if ($("#piechart").length) {
$.plot($("#piechart"), JSON.parse(isPostBackObject.val()),
你定义了一个C#类
并将数据保存到列表中
var data = new List<PieModel> {
new PieModel { label = "Pending", data = 10d }
new PieModel { label = "New", data = 40d }
new PieModel { label = "Overdue", data = 50d }
};
hdnIsPostback.Value = new JavaScriptSerializer().Serialize(data);
最好的IMO是
C#4.0+
和匿名类型(对象)的dynamic
列表
var data=new List(){
新的{label=“Pending”,data=10d},
新建{label=“new”,data=40d},
新{label=“过期”,数据=50d}
};
var serialized=新的JavaScriptSerializer()。序列化(数据);
我已经尝试过完全相同的方法。但是同样的事情(不显示标签)你能提供序列化方法的结果吗?[{“标签”:“挂起”,“数据”:10},{“标签”:“新”,“数据”:40},{“标签”:“过期”,“数据”:50}]这是我得到的“[{“标签”:“挂起”,“数据”:“10”},{“标签”:“正在进行”,“数据”:“20”},{“标签”:“取消”,“数据”:“40”}]“'JSON.parse(isPostBackObject.val()),“他为我做了这件事。非常感谢男士:)通过使用类/模型并在Select
中转换对象,或者使用匿名类(如示例),我提供了一个示例,说明如何输出正确的结构以供PieChart分析。“保护”是什么意思?当我序列化时,我得到这个“[{”标签“:“挂起”,“数据“:“10”},{”标签“:“进行中”,“数据“:“20”},{”标签“:“取消”,“数据“:“40”}]”百分比值在数据中显示得非常好代码>和数据。添加(“待定”,10)代码>问题与标签有关。“未定义”将显示,而不是标签。
var isPostBackObject = $("#hdnIsPostback");
if ($("#piechart").length) {
$.plot($("#piechart"), JSON.parse(isPostBackObject.val()),
var data=new List<dynamic>(){
new { label = "Pending", data = 10d },
new { label = "New", data = 40d },
new { label = "Overdue", data = 50d }
};
var serialised = new JavaScriptSerializer().Serialize(data);