как отключить linkButton в aspx, когда определенное условие установлено - PullRequest
0 голосов
/ 05 февраля 2020

Позвольте мне объяснить мою проблему, у меня есть LinkButton:

<asp:LinkButton ID="ForceUpdate" runat="server" OnClick="ForceUpdateBtn_Click" Text="<%$ Resources:Resource1, ForceUpdate%>" />

, когда я нажимаю на эту LinkButton, я устанавливаю команду и затем проверяю с помощью JQuery, нажата ли кнопка, чтобы показать сообщение подождать, пока машина подключится к сети, чтобы получить обновленные данные, а затем отключить кнопку:

window.setInterval(function () {
        $.ajax({
            async: true,
            type: 'POST',
            url: "../../WS/IOT_WebService.asmx/GetUpdateStatusStats",
            data: { mccid: <%=mccIdToJavascript%>, language: '<%=currentCulture%>' }, // mccid: ID machine
            cache: false,
            beforeSend: function () {
            },
            success: function (txt) {                    
                var string = xmlToString(txt);
                string = string.replace("<?xml version=\"1.0\" encoding=\"utf-8\"?><string xmlns=\"http://tempuri.org/\">", "");
                string = string.replace("<string xmlns=\"http://tempuri.org/\">", "");
                string = string.replace("</string>", "");
                console.log('check is ', <%=checkClick%>);

                var check = <%=checkClick%>;
                if (check) {
                    $('#status-force-update').text(string);
                } else {
                    $('#status-force-update').text('----------');
                }
            },
            error: function (xhr, status, error) {
                var err = eval("(" + xhr.responseText + ")");
                alert(err.Message);
            }
        });
    }, 3000);

Вот метод из веб-службы, где я проверяю, установлены ли в БД определенные данные (CMD_Date_hour_Ok! = null ), чтобы обновить сообщение о том, что устройство подключено к сети, и включить кнопку назад.

  [WebMethod]
  public string GetUpdateStatusStats(string mccid, string language)
  {
    String strResponse = String.Empty;
    CultureInfo currentCulture = new CultureInfo(language);
    Thread.CurrentThread.CurrentCulture = currentCulture;
    Thread.CurrentThread.CurrentUICulture = currentCulture;

    try
    {
      MCC_Machine mcc = MCC_Machine.Retrieve(Convert.ToInt32(mccid));
      CMD_Command cmd = CMD_Command.RetrieveByMCCType(mcc, 14); // 14 means that a ForceUpdate were launched
      if (cmd == null)
      {
        cmd = CMD_Command.RetrieveByMCCType(mcc, 14);
      }

      if (cmd.CMD_Date_hour_Ok != null)
      {
        // machine is online
        strResponse = Resources.Resource1.ForceUpdateStatsOnline.ToString();
      }
      else
      {
        // machine is offline
        strResponse = Resources.Resource1.ForceUpdateStatsOffline.ToString();
      }
    }
    catch
    {
      strResponse = Resources.Resource1.ForceUpdateStatsOffline.ToString();
    }

    return strResponse;
  }

Теперь мне нужно отключить LinkButton и, возможно, изменить цвет на серый, чтобы понять, что он отключен при нажатии кнопки. и включите его, когда машина находится в сети. Как я могу это сделать? Спасибо

1 Ответ

0 голосов
/ 05 февраля 2020

Вам необходимо изменить отключенный атрибут ForceUpdate через каждый интервал следующим образом:

window.setInterval(function () {
        $.ajax({
            async: true,
            type: 'POST',
            url: "../../WS/IOT_WebService.asmx/GetUpdateStatusStats",
            data: { mccid: <%=mccIdToJavascript%>, language: '<%=currentCulture%>' }, // mccid: ID machine
            cache: false,
            beforeSend: function () {
            },
            success: function (txt) {                    
                var string = xmlToString(txt);
                string = string.replace("<?xml version=\"1.0\" encoding=\"utf-8\"?><string xmlns=\"http://tempuri.org/\">", "");
                string = string.replace("<string xmlns=\"http://tempuri.org/\">", "");
                string = string.replace("</string>", "");
                console.log('check is ', <%=checkClick%>);

                var check = <%=checkClick%>;
                if (check) {
                    $('#status-force-update').text(string);
                } else {
                    $('#status-force-update').text('----------');
                }

                if(string =="Online"){ //check is machine online then set disable false
                    $("#<%=ForceUpdate.ClientID %>").attr("disabled", false);
                }else{ // else mean machine is offline
                    $("#<%=ForceUpdate.ClientID %>").attr("disabled", true);
                }
            },
            error: function (xhr, status, error) {
                var err = eval("(" + xhr.responseText + ")");
                alert(err.Message);
            }
        });
    }, 3000);
...