2016-11-22 60 views
0

我在做一個「Ping」(ICMP)web應用程序,我需要在圖中顯示ping的時間結果(我使用的是shieldui) 。我對網絡開發非常陌生,所以我對框架的瞭解很有限。C#JQuery,在webform中加載數據並將它傳遞給另一個webform

在「ping.aspx」中,我加載了我想要ping的服務器列表。當我按下標有「ping」的按鈕時,Web應用程序將ping所有服務器,然後爲每個服務器打開一個帶有單個圖形的新窗口。

這是工作,直到在新窗口中

這裏裝載圖的一點是我grafica.aspx文件:

$(".pingAll").click(function() { 
    primerClick = true; 
    $("#txtLista option").each(function() { 
     var valorSvr = $(this).val(); 
     //var container = $("#contenedorChart"); 
     //var grafics = container.find("div"); 
     //var idGrafics = grafics.length + 1; 

     //container.append("<div id=shieldui-chart" + valorSvr + "></div>"); 

     refreshListaServidores(valorSvr) 
    }); 
    //window.location.href = 'graficas.aspx';   
}); 


function refreshListaServidores(valorSvr) { 

    $("#txtLista option").each(function() { 
     var valorSvr = $(this).val(); 

     var container = $("#contenedorChart"); 
     var grafics = container.find("div"); 
     var idGrafics = grafics.length + 1; 

     container.append("<div id=shieldui-chart" + valorSvr + "></div>"); 

    }); 

    lista = lista + "|" + valorSvr; 
    var data = { 
     vl: lista 
    } 

    $.ajax({ 
     type: "POST", 
     url: "ping.aspx/valoresLista", 
     cache: false, 
     async: true, 
     data: JSON.stringify(data), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (result) { 
      var resultado = result.d 

      $.each(resultado, function (index, item) { 
       var resultPing = { items: [] }; 
       var resultadoGrafica = { grafica: [null] }; 

       $.each(item, function (inde, ite) { 
        var valMs = ite.ms; 
        var valServer = ite.servers; 
        var txtData = "Servidor: " + valServer + " | " + "Dirección: " + ite.address + " | " + 
            "Time to Live: " + ite.ttl + " | " + "Tamaño Buffer: " + ite.bufferSize + " | " + 
            "Tiempo en ms: " + valMs + "\n"; 
        resultadoGrafica.grafica.push(valMs); 
        resultPing.items.push(txtData); 
       }); 

       $("#txtResultPing").val(resultPing.items); 

       jQuery(function ($) { 
        $("div[id*='shieldui-chart" + valorSvr + "']").shieldChart({ 
         axisX: { 
          axisType: 'linear', 
          ticksColor: 'yellow', 
          borderColor: 'yellow', 
          min: 1, 
          max: 40 
         }, 
         theme: "dark", 

         primaryHeader: { 
          text: "Gráfico de: " + valorSvr 
         }, 
         exportOptions: { 
          image: false, 
          print: false 
         }, 
         dataSeries: [{ 
          seriesType: "line", 
          collectionAlias: "Tiempos en ms", 
          data: resultadoGrafica.grafica 
         }] 
        }); 
       }); 
      }); 
     }, error: function (result, xhr, ajaOptions, throwError) { 
      var vainaconvaina = result + xhr + ajaOptions + throwError; 
     } 
    }); 
} 

並在後面的代碼,在C#我有

[WebMethod] 
    public static List<List<dataResult>> valoresLista(string vl) 
    { 
     dataResult dataRes = new dataResult(); 

     HttpContext.Current.Session["pingas"] = vl; 

     Ping ping = new Ping(); 

     string contentLista = vl; 
     string[] contentListaArray = contentLista.Split('|'); 
     List<dataResult> listaPing = new List<dataResult>(); 

     List<List<dataResult>> listaGral = new List<List<dataResult>>(); 

     foreach (string word in contentListaArray) 
     { 
      dataRes = new dataResult(); 

      if (!string.IsNullOrEmpty(word.ToString())) 
      { 
       try 
       { 
        listaPing = new List<dataResult>(); 
        for (int i = 1; i <= 40; i++) 
        { 
         dataRes = new dataResult(); 
         ping = new Ping(); 
         PingReply pingreply = ping.Send(word); 

         if (pingreply.Status == IPStatus.Success) 
         { 
          dataRes.servers = Convert.ToString(word); 
          dataRes.address += Convert.ToString(pingreply.Address); 
          dataRes.ms += Convert.ToInt32(pingreply.RoundtripTime); 
          dataRes.ttl += Convert.ToInt32(pingreply.Options.Ttl); 
          dataRes.bufferSize += Convert.ToString(pingreply.Buffer.Length.ToString()); 
          dataRes.errr += "Successful"; 
         } 
         else 
         { 
          dataRes.errr = Convert.ToString("Host de destino no disponible o inalcanzable"); 
         } 

         listaPing.Add(dataRes); 
        } 
       } 
       catch (Exception err) 
       { 
        PingReply pingreply = ping.Send(word); 
        if (pingreply.Status == IPStatus.DestinationHostUnreachable || pingreply.Status == IPStatus.DestinationNetworkUnreachable || pingreply.Status == IPStatus.TimeExceeded || pingreply.Status == IPStatus.TtlExpired || pingreply.Status == IPStatus.Unknown) 
        { 
         string emailEnProceso = "Se le informa "; 
         emailEnProceso += Environment.NewLine; 
         emailEnProceso += Environment.NewLine; 
         emailEnProceso += "que el servidor " + vl; 
         emailEnProceso += Environment.NewLine; 
         emailEnProceso += Environment.NewLine; 
         emailEnProceso += "podría estar presentando fallos debido a que en el último minuto no estuvo respondiento las solicitudes de ping "; 
         emailEnProceso += Environment.NewLine; 
         emailEnProceso += "Tome las medidas necesarias. "; 
         emailEnProceso += Environment.NewLine; 
         emailEnProceso += Environment.NewLine; 
         emailEnProceso += "something"; 
         emailEnProceso += Environment.NewLine; 
         emailEnProceso += "www.somethingelse.com"; 
         string asunto = "Falla en el servidor " + vl; 
         enviarMail(emailEnProceso, asunto, "[email protected]"); 


         listaPing.Add(dataRes); 
        } 
        else 
        { 
         dataRes.errr = Convert.ToString(err.Message); 
        } 
       } 

       listaGral.Add(listaPing);     
      } 
     } 

     return listaGral;    
    } 

我很確定這段代碼沒有那麼糟糕,但我需要知道的是如何將數據從「ping.aspx」「移動」到「grafica.aspx」。

也許我真的很接近,但實際上我並不真正瞭解如何組織自己的網絡表單。

非常感謝。

回答

1

據我看到你的代碼片段,它似乎是好的。但這取決於您獲得成功後的數據。另外,您不需要爲每個請求創建新的圖表實例,只需刷新現有實例即可。 儘管需要整個應用程序,但需要詳細的幫助。

+0

在jquery的成功發佈後,我得到一個int值,它表示每個ping事件的時間(以毫秒爲單位),並且我得到應用程序發出ping事件的服務器列表。它應該爲選擇框中的每個服務器創建一個圖表。我想將這些數據傳遞給第二個.aspx網頁來構建圖表。它在單個.aspx網頁中運行得非常好,但請求說它應該在另一個網頁中。非常感謝您的幫助,我很感激 – Waramato

相關問題