Я пытаюсь нарисовать мультисерийную диаграмму в своем приложении asp webforms. Я использую этот урок Ссылка
и получаю ошибку. Та же проблема была решена, когда я пытался нарисовать диаграмму P ie, где я использую этот урок Link1
В обоих случаях я получаю одну и ту же ошибку. На странице загрузки я получаю эту ошибку:
Chart.asmx/GetChart:1 Failed to load resource: the server responded with a status of 500 (Internal Server Error)
И когда я меняю выбор из выпадающего списка, я получаю эту ошибку
jquery.min.js:2 POST http://localhost:55550/Chart.asmx/GetChart 500 (Internal Server Error)
РЕДАКТИРОВАТЬ Та же самая ошибка происходит, когда я публикую sh приложение. У меня есть веб-метод Chart.asmx, и метод в этом методе является GetChart. Исходный код метода:
public static List<object> GetChart(string policaID, int zaposlenik)
{
List<object> chartData = new List<object>();
string query = "SELECT DISTINCT DATEPART(YEAR, pocetak) Year FROM Police";
DataTable dtYears = GetData(query);
List<int> labels = new List<int>();
foreach (DataRow row in dtYears.Rows)
{
labels.Add(Convert.ToInt32(row["Year"]));
}
chartData.Add(labels);
query = string.Format("SELECT DATEPART(YEAR, p.pocetak) Year,COUNT(DATEPART(YEAR, p.pocetak)) BrojPolica from Police p RIGHT JOIN Zaposlenici z on p.djelatnik = z.zaposleniID " +
"WHERE p.vrsta_police = " + policaID + " GROUP BY DATEPART(YEAR, p.pocetak)");
List<int> series1 = new List<int>();
DataTable dtPolice = GetData(query);
foreach (DataRow row in dtPolice.Rows)
{
series1.Add(Convert.ToInt32(row["BrojPolica"]));
}
chartData.Add(series1);
query = string.Format("SELECT DATEPART(YEAR, p.pocetak) Year,COUNT(DATEPART(YEAR, p.pocetak)) BrojPolica from Police p RIGHT JOIN Zaposlenici z on p.djelatnik = z.zaposleniID " +
"WHERE p.djelatnik=" + zaposlenik.ToString() + " GROUP BY DATEPART(YEAR, p.pocetak)");
List<int> series2 = new List<int>();
DataTable dtZaposlenik = GetData(query);
foreach (DataRow row in dtZaposlenik.Rows)
{
series2.Add(Convert.ToInt32(row["BrojPolica"]));
}
chartData.Add(series2);
return chartData;
}
У меня также есть два раскрывающихся списка. Один из них - изменить тип страховых полисов, а второй - выбрать сотрудника. Страница aspx выглядит следующим образом
Vrsta Police:
<asp:DropDownList ID="ddlVrstaPolice" runat="server"></asp:DropDownList>
Djelatnik:
<asp:DropDownList ID="ddlZaposlenike" runat="server"></asp:DropDownList>
<div id="dvChart">
</div>
<p class="text-center">
И Java Код сценария для рисования диаграммы:
$(function () {
LoadChart();
$("[id*=ddlVrstaPolice], [id*=ddlZaposlenike]").bind("change", function () {
LoadChart();
});
});
function LoadChart() {
var vrsta_police = $("[id*=ddlVrstaPolice]").val();
var zaposlenik = $("[id*=ddlZaposlenike]").val();
$.ajax({
type: "POST",
url: '<%=ResolveUrl("~/Chart.asmx/GetChart") %>',
data: "{policaID: '" + vrsta_police + "', zaposlenik: '" + zaposlenik + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
var labels = r.d[0];
var series1 = r.d[1];
var series2 = r.d[2];
var data = {
labels: r.d[0],
datasets: [
{
label: vrsta_police,
fillColor: "rgba(255, 255, 193, 0.2)",
strokeColor: "#FCD209",
pointColor: "#FF8C00",
data: series1
},
{
label: zaposlenik,
fillColor: "rgba(217, 237, 247, 0.2)",
strokeColor: "#BCE8F1",
pointColor: "#0090CB",
data: series2
}
]
};
$("#dvChart").html("");
var canvas = document.createElement('canvas');
$("#dvChart")[0].appendChild(canvas);
//Fix for IE 8
if ($.browser.msie && $.browser.version == "8.0") {
G_vmlCanvasManager.initElement(canvas);
}
var ctx = canvas.getContext('2d');
ctx.canvas.height = 300;
ctx.canvas.width = 500;
var lineChart = new Chart(ctx).Line(data, {
bezierCurve: false
});
},
failure: function (response) {
alert('There was an error.');
}
});
}