Кнопка «Обновить» и «Очистить» не работают в приложении asp.net - PullRequest
0 голосов
/ 25 октября 2019

Мои кнопки «Очистить» и «Обновить» не очищают входы моего филиала и терминала на моей веб-странице. Я думаю, что это как-то связано с моим KnockoutJS, так как я связываю данные с таблицей в БД. Возможно, KnockoutJS не работает должным образом. Страница должна отображать извлеченные данные из БД каждый раз, когда нажимается кнопка «Обновить». Но кажется, что код даже ничего не извлекает из БД. Я новичок в изучении основы asp.net, так что кто-нибудь может мне помочь с моей проблемой? T

Я попытался взглянуть на другие функции API и лишь немного подправил параметры для выборки из БД, поскольку есть разные таблицы, из которых мне нужно выбирать. Я также изменил хранимую процедуру на соответствующей странице для функции API, чтобы получить данные из SQL Server, но все равно страница выглядит пустой и кнопки не работают.

кнопки html

 <div class="col-sm-5 col-md-5 col-lg-5 m-b-15">
                            <button id="btnRefreshForecastDetails" type="button" class="btn btn-primary btn-custom w-md waves-effect waves-light" data-bind="click: refresh"><i class="mdi mdi-refresh"></i> <span>Refresh</span></button>
                            <button id="btnClearAll" type="button" class="btn btn-primary btn-custom w-md waves-effect waves-light" onclick="ClearAll();"><i class="mdi mdi-close"></i> <span>Clear All</span></button>

                        </div>   

.JS функция

    var ObservableModelMain = function () {
var self = this;
self.gifts = ko.observableArray();

self.refresh = function () {
    StartLoadingPage();
    url = sessionStorage.getItem('WebApiURL') + "IT_GetDetails?ID=" + sessionStorage.getItem('ID');
    var table = $('#main-table');//table from DB
    var PageSize = sessionStorage.getItem('PageSize');
    var valueToPush = {};
    var FinalData = [];
    valueToPush.PageNumber = table.getPageNum();
    valueToPush.PageSize = PageSize;
    valueToPush.SortExpression = table.getSortExpression();
    valueToPush.SortOrder = table.getSortOrder();
    valueToPush.SearchBranchNo = _strSearchBranchNo;
    valueToPush.SearchTerminalNo = _strSearchTerminalNo;
    valueToPush.SearchDate = _strSearchDate;
    FinalData.push(valueToPush);
    valueToPush = {};
    var myJSON = JSON.stringify(FinalData)

    $.ajax({
        url: url,
        type: "POST",
        data: myJSON,
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            DeviceStatus = data["errorCode"];
            Param = data["param"];
            if (DeviceStatus == 'SUCCESS') {
                var obj = JSON.parse(Param);

                if (obj[0].length == 0 && obj[1][0].TotalOutput != 0) {
                    document.getElementById('btnRefreshForecastDetails').click();
                }
                else {
                    self.gifts(obj[0]);
                }

                table.updateTable(parseInt(PageSize), obj[1][0].TotalOutput);
                //GetBranchList();
            }
            else {
                swal("Error", "Fail to retrieve forecast details, " + Param, "error");
            }

            CloseLoadingPage();
        }
    });
}
    };

API-функция

    public async Task<TCR_RESPONSEMESSAGE> IT_GetForecastDetails(ITForecast[] Alldata)
    {
        StringBuilder sbReturnMessage = new StringBuilder();
        StringBuilder sbTraceMessage = new StringBuilder();
        API_COMPLETEMESSAGE tcm = null;
        WebAPITraceLog wtl = null;
        string reqStr = string.Empty;
        string repStr = string.Empty;
        string MessageSeqNo = string.Empty;
        const string functionNameStr = nameof(IT_GetForecastDetails);
        API_FUNCTION APIFunctionCode = API_FUNCTION.IT_GetForecastDetails;

        StringBuilder sbSQLStmt = new StringBuilder();
        bool asyncResult = false;
        DataSet dsData = new DataSet();
        bool blnResult = false;
        string strTable = "tblForecastDetails";
        List<SqlParameter> SqlParameters = new List<SqlParameter>();
        try
        {
            using (SqlConnection SQLDBConn = new SqlConnection(sqlTCRSecureBODBConnStr))
            {
                await SQLDBConn.OpenAsync();

                SqlParameters.Add(new SqlParameter("@PageNumber", Alldata[0].PageNumber));
                SqlParameters.Add(new SqlParameter("@PageSize", Alldata[0].PageSize));
                SqlParameters.Add(new SqlParameter("@SortExpression", Alldata[0].SortExpression));
                SqlParameters.Add(new SqlParameter("@SortOrder", Alldata[0].SortOrder));

                SqlParameter OutputParam = new SqlParameter("@TotalRecords", SqlDbType.BigInt);
                OutputParam.Direction = ParameterDirection.Output;
                SqlParameters.Add(OutputParam);

                blnResult = ReadDataSetByStoredProcedure("GetForecastDetailsWithPage", SqlParameters, strTable, DEFAULT_LOG_NAME, SQLDBConn, ref dsData);

                if (blnResult == false)
                {
                    tcm = FAIL_READ_MESSAGE;
                    tcm.Param = "Fail to read GetForecastDetailsWithPage.";
                    goto ExitHandler;
                }

                DataTable tbl = new DataTable("tblPagerInfo");

                tbl.Columns.Add("TotalOutput", typeof(long));

                tbl.Rows.Add(Convert.ToInt64(SqlParameters[4].Value));

                dsData.Tables.Add(tbl);
            }

            if (dsData != null)
            {
                tcm = SUCCESS_MESSAGE;
                tcm.Param = JsonConvert.SerializeObject(dsData.Tables);
                goto ExitHandler;
            }
            else
            {
                tcm = FAIL_READ_MESSAGE;
                tcm.Param = "Fail to read GetForecastDetailsWithPage.";
                goto ExitHandler;
            }

            ExitHandler:
            tcm.Function = APIFunctionCode;
            return await ProcessAPICompleteMessage(tcm, functionNameStr);
        }
        catch (Exception ex)
        {
            string errorMessages = string.Empty;
            errorMessages += "Description : " + ex.Message;
            LogError(DEFAULT_LOG_PATH, DEFAULT_LOG_NAME, errorMessages, GetLineNumber(ex).ToString(), functionNameStr);
            tcm = EXCEPTION_MESSAGE;
            tcm.Function = APIFunctionCode;
            tcm.Param = errorMessages;
            return await ProcessAPICompleteMessage(tcm, functionNameStr);
        }
    }

Я ожидаю "Обновить" и "Очистить""кнопки для работы и для извлечения данных БД из объявленной таблицы для отображения на веб-странице.

1 Ответ

0 голосов
/ 30 октября 2019

ну, во-первых, я не вижу, чтобы ваш нокаут где-либо был привязан к вашей модели представления, предпочтительно ниже определения вашей модели представления.

ko.applyBindings(new ObservableModelMain());

и, во-вторых, ваша кнопка очистки имеет обычный старый javascript onclick событиеатрибут, а не привязка данных к -также недоступен- self.clear = function() {...} в вашей нокаут-модели представления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...