最近在使用google visualization做報表分析
想實作使用DropDownList select的值撈DataBase的資料
但是遇上使用AJAX傳值的問題,資料都撈不出來
不知道大大們可以給點指教與解惑 @@
.aspx
<script type="text/javascript">
google.load("visualization", "1", { packages: ["corechart"] });
google.setOnLoadCallback(drawChart);
function drawChart() {
var options = {
title: '使用量表',
width: 1500,
height: 1000,
bar: { groupWidth: "90%" },
legend: { position: "none" },
isStacked: true
};
$.ajax({
type: "POST",
url: "Analysis_Page.aspx/GetChartData",
data: '{}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
var data = google.visualization.arrayToDataTable(r.d);
var chart = new google.visualization.BarChart($("#chart")[0]);
chart.draw(data, options);
},
failure: function (r) {
alert(r.d);
},
error: function (r) {
alert(r.d);
}
});
}
function ShowCurrentBuilding() {
$.ajax(
{
type: "POST",
url: "Analysis_Page.aspx/GetChartData",
data: '{PassValue: ' + $('#<%= parkDDL.ClientID %> option:selected').val() + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function (response) {
alert(response.d);
}
});
}
function OnSuccess(response) {
alert(response.d);
}
</script>
<td>
<asp:DropDownList ID="parkDDL" ClientIDMode="Static" onchange="ShowCurrentBuilding()" style="width:150px;" runat="server" AutoPostBack="true">
<asp:ListItem text="A" value="A"></asp:ListItem>
<asp:ListItem text="B" value="B"></asp:ListItem>
<asp:ListItem text="C" value="C"></asp:ListItem>
<asp:ListItem text="D" value="D"></asp:ListItem>
</asp:DropDownList>
</td>
aspx.cs
[WebMethod]
public static List<object> GetChartData(string PassValue)
{
string query = "SELECT name, COUNT(ID) Total_ID FROM Info INNER JOIN P_infor ON D_info.FK_Pa_infor_ID = P_infor.Pa_infor_ID WHERE [Level] = '" + PassValue + "' AND isnull(P_infor.D_Mark, '') = '' GROUP BY name ORDER BY Total_ID DESC";
string constr = ConfigurationManager.ConnectionStrings["XX"].ConnectionString;
List<object> chartData = new List<object>();
chartData.Add(new object[]
{
"name", "Total_ID"
});
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
chartData.Add(new object[]
{
sdr["name"], sdr["Total_ID"]
});
}
}
con.Close();
return chartData;
}
}
}