C# c中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 }

我正在尝试在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 }
];
下面是显示饼图的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);