У меня есть раскрывающийся список ASPX, который используется при вызове веб-службы для создания графика.
Если я вручную введу записи раскрывающегося списка, код выполняется нормально, однако, если я динамически генерирую выпадающий список с сервера SQL, при котором вызов веб-службы завершается неудачей.
Вот как я генерирую раскрывающийся список:
//Populate Customers DDL
string constr = ConfigurationManager.ConnectionStrings["Indigo2.Properties.Settings.ConstrNW"].ConnectionString;
DataTable customers = new DataTable();
using (SqlConnection con = new SqlConnection(constr))
{
try
{
SqlDataAdapter adapter = new SqlDataAdapter("SELECT DISTINCT custid from [Indigo].[dbo].[invoices] WHERE custid='ACC001'", con);
adapter.Fill(customers);
//ddlCustA.DataSource = customers;
//ddlCustA.DataTextField = "custid";
//ddlCustA.DataValueField = "custid";
//ddlCustA.DataBind();
}
catch (Exception ex)
{
// Handle the error
}
}
Вот HTML
<asp:DropDownList ID="ddlCustA" runat="server" Height="17px" Width="100px" AutoPostBack="True">
</asp:DropDownList>
Здесь я вызываю веб-службу
//Code for graph (all in document ready)
$("#btn_line_chart").on('click', function () {
var CustA = $("#ddlCustA").val();
var CustB = $("#ddlCustB").val();
var getYear = $("#ddlYear").val();
var jsonData = JSON.stringify({
custA: CustA,
custB: CustB,
year: getYear
});
$.ajax({
type: "POST",
url: "WebService1.asmx/getLineChartData",
data: jsonData,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess_,
error: OnErrorCall_
});
function OnSuccess_(reponse) {
var aData = reponse.d;
var aLabels = aData[0];
var aDatasets1 = aData[1];
var aDatasets2 = aData[2];
var data = {
labels: aLabels,
datasets: [{
label: "My First dataset",
fillColor: "rgba(220,220,220,0.2)",
strokeColor: "rgba(220,220,220,1)",
pointColor: "rgba(220,220,220,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(220,220,220,1)",
data: aDatasets1
},
{
label: "My Second dataset",
fillColor: "rgba(151,187,205,0.2)",
strokeColor: "rgba(151,187,205,1)",
pointColor: "rgba(151,187,205,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(151,187,205,1)",
data: aDatasets2
}]
};
var ctx = $("#myChart").get(0).getContext('2d');
ctx.canvas.width = 750; // setting width of canvas
ctx.canvas.height = 400; // setting height of canvas
var lineChart = new Chart(ctx, {
type: "line",
data: data,
bezierCurve: false
});
}
function OnErrorCall_(repo) {
alert("Woops something went wrong, pls try later !");
}
});
Если я вручную выбираю параметры раскрывающегося списка (как показано ниже), он работает нормально.
<select id="ddlCustA">
<option>ACC001</option>
</select>
Когда раскрывающийся список список генерируется сервером SQL, вызов веб-службы завершается с ошибкой:
HTTP500: ОШИБКА СЕРВЕРА - сервер обнаружил непредвиденное состояние, которое не позволило ему выполнить запрос. (XHR) POST - https://localhost: 44338 / WebService1.asmx / getLineChartData
Любая помощь с благодарностью.
ОБНОВЛЕНИЕ: похоже, время вопрос. Если я добавляю предупреждение непосредственно перед тем, как веб-служба вызывает переменную ddlCustA, ddlCustA отображается как «Не определено»
alert($("#ddlCustA").val());