Динамически генерируемый выпадающий список прерывает вызов веб-службы - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть раскрывающийся список 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());

1 Ответ

0 голосов
/ 01 апреля 2020

В случае, если это кому-то поможет, моим решением было то, как я вызывал объект из Javasctipt. Приведенный ниже код исправил это.

 var CustA = document.getElementById('<%= ddlCustA.ClientID %>').value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...