因此,這裏是我做的解決方案!
我使用了與http://connect.gxsoftware.com/dashboardplugin/demo/dashboard.html相同的插件。
的方法,我把:
1)向服務器單獨調用來從服務器獲取的所有數據。我這樣做,它一氣呵成返回圖表所需的數據在服務器上的模型:我的模型看起來是這樣的:
public class DashboardWidget
{
public DashboardWidget()
{
open = "true";
}
public string open { get; set; }
public string title { get; set; }
public string id { get; set; }
public string column { get; set; }
public string url { get; set; }
public object data { get; set; }
public string chartype { get; set; }
}
1)儀表板應只負責創建控件。所以所有json對服務器的調用都被刪除了。儀表板只負責創建小部件,而不是其他任何東西。
2)創建一個單獨的框架,將只負責內容附加到已創建的div [由儀表盤創建]
這裏是Jquery的代碼:
function CreateAndInitDashboard(jsonUrl, div) {
var startId = 100;
$.ajax({
url: jsonUrl,
context: document.body,
success: function (data) {
var dashboard = div.dashboard({
// layout class is used to make it possible to switch layouts
layoutClass: 'layout',
// feed for the widgets which are on the dashboard when opened
layouts:
[
{ title: "Layout1",
id: "layout1",
image: "/layouts/layout1.png",
html: '<div class="layout layout-a"><div class="column first column-first"></div></div>',
classname: 'layout-a'
},
{ title: "Layout2",
id: "layout2",
image: "/layouts/layout2.png",
html: '<div class="layout layout-aa"><div class="column first column-first"></div><div class="column second column-second"></div></div>',
classname: 'layout-aa'
},
{ title: "Layout3",
id: "layout3",
image: "layouts/layout3.png",
html: '<div class="layout layout-ba"><div class="column first column-first"></div><div class="column second column-second"></div></div>',
classname: 'layout-ba'
},
{ title: "Layout4",
id: "layout4",
image: "/layouts/layout4.png",
html: '<div class="layout layout-ab"><div class="column first column-first"></div><div class="column second column-second"></div></div>',
classname: 'layout-ab'
},
{ title: "Layout5",
id: "layout5",
image: "/layouts/layout5.png",
html: '<div class="layout layout-aaa"><div class="column first column-first"></div><div class="column second column-second"></div><div class="column third column-third"></div></div>',
classname: 'layout-aaa'
}
]
}); // end dashboard call
dashboard.init(data.result); // passing the data to the dashboard !!!
$(data.result.data).each(function() {
var element = this.id;
if (this.chartype == 'PIE') {
$('#' + element + ' .widgetcontent').kendoChart({
title: { text: "" },
dataSource: this.data,
//chartArea: { background: "" },
legend: { position: "top" },
seriesDefaults: { type: "pie" },
series: [{
field: "ExposedLimit",
categoryField: "BusinessUnitName"
}],
tooltip: {
visible: true,
format: "{0:N0}"
}
});
}
else if (this.chartype == 'BAR') {
$('#' + element + ' .widgetcontent').kendoChart({
title: { text: "" },
dataSource: this.data,
sort: {
field: "SubmitMonth",
dir: "asc"
},
//chartArea: { background: "" },
legend: { position: "top" },
seriesDefaults: { type: "bar", labels: { visible: true, format: "{0}"} },
tooltip: { visible: true, format: "{0:N0}" },
series: [{ field: "Count", name: "CompanyA"}],
valueAxis: {
labels: { format: "{0}" }
},
//seriesClick: onSeriesClick,
categoryAxis: {
field: "SubmitMonth",
labels: { format: "{0:MM}" }
}
});
}
});
}
});
}
});
希望這有助於!
感謝, Anirban
@Anirban嗨..是插件的免費或付費? – 2013-11-03 12:07:23
@PravinKumar插件的JavaScript與jQuery相同的許可條款。 – 2014-02-20 10:50:44
@DonalLafferty:感謝您的信息.. – 2014-02-20 12:30:19