Dears,
i create Google chart with DropDownList menu to select records from SQL DB and display to the chart depend years , and its working fine no issue for that but when i am select year that doesn’t have record it give me this error on chart
'Data column(s) for axis #0 cannot be of type string×'
i need to display error message that (Unable to load chart as there is no record found for selected years ).
here is my code :-
<script type="text/javascript">
google.load("visualization", "1", { packages: ["corechart"] });
google.setOnLoadCallback(function () {
// Draw Chart on DropDownList change.
$("[id*=Drpyear1]").on("change", function () {
drawChart3();
});
// Draw Chart on Button click.
$("[id*=Drpyear1]").on("click", function () {
drawChart3();
return false;
});
});
function drawChart3() {
var years = $("[id*=Drpyear1] option:selected").val();
$.ajax({
type: "POST",
url: "Default.aspx/GetChartDataqntdv",
data: "{years: '" + years + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
var data = google.visualization.arrayToDataTable(r.d);
var chart = new google.visualization.ColumnChart($("#chart2")[0]);
var options =
{
title: years + ' Qanawat Development Montly Cost',
titlePosition: 'center',
titleTextStyle: { color: '39568e' },
//curveType: 'function',
bar: { groupWidth: "75%" },
legend: { position: 'none' },
colors: ['#b3891f'],
hAxis: {
title: 'Months',
titleTextStyle: {color: '#333'}
},
vAxis: {
minValue: 0,
title: "Cost",
format: 'currency',
explorer: {
actions: ['dragToZoom', 'rightClickToReset'],
keepInBounds: true,
maxZoomIn: 1.0}
},
isStacked: true
};
chart.draw(data, options);
},
failure: function (r) {
alert(r.d);
},
error: function (r) {
alert(r.d);
}
});
}
</script>
[WebMethod]
public static List<object> GetChartDatatest()
{
string query = "select month , TMC as [Cost]";
query += "From Months "
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
List<object> chartData = new List<object>();
chartData.Add(new object[]
{
"month", "Cost"
});
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
//cmd.Parameters.AddWithValue("@Country", country);
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
chartData.Add(new object[]
{
sdr["month"], sdr["Cost"]
});
}
}
con.Close();
return chartData;
}
}
}