【问题标题】:C# JQuery, Load data in webform and pass it to another webformC# JQuery,在 webform 中加载数据并将其传递给另一个 webform
【发布时间】:2016-11-22 22:06:05
【问题描述】:

我正在制作一个“Ping”(ICMP)网络应用程序,我需要在图表中显示 ping 的时间结果(我使用的是 shieldui)。我对 Web 开发非常陌生,因此我对框架的了解有限。

在“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, "someEmail@gmail.com");


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

                listaGral.Add(listaPing);                   
            }
        }

        return listaGral;            
    }

我很确定这段代码一点也不差,但我需要知道如何将数据从“ping.aspx”“移动”到“grafica.aspx”。

也许我真的很接近,但实际上我并不真正了解如何在网络表单之间组织自己。

非常感谢。

【问题讨论】:

    标签: c# jquery asp.net webforms


    【解决方案1】:

    就我从您的代码片段中看到的,似乎还可以。但这取决于您在发布成功后获得的数据。此外,您不需要在每个请求上创建一个新的图表实例,您只需刷新现有实例即可。 需要整个应用程序才能获得详细帮助。

    【讨论】:

    • 在 jquery 发布成功后,我得到一个 int 值列表,它表示每个 ping 事件的时间(以毫秒为单位),并且我得到了应用程序发出 ping 事件的服务器列表。它应该为选择框中的每个服务器创建一个图表。我想获取该数据并将其传递给第二个 .aspx 网页以构建图表。它在单个 .aspx 网页中运行良好,但请求说它应该在另一个网页中。非常感谢您的帮助,不胜感激
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多