Torakami Ответов: 2

Как заполнить данные из sql для диаграммы пончика Морриса?


Привет ,

<script type="text/javascript">
    $(document).ready(function () {
        debugger;
        /* MORRIS DONUT CHART
              ----------------------------------------*/
        Morris.Donut({
            element: 'morris-donut-chart',
            data: [{
                label: "Arun",
                value: 27000
            }, {
                label: "Saumya",
                value: 5500
            }, {
                label: "Nilesh",
                value: 5500
            }, {
                label: "Tejas",
                value: 5500
            }, {
                label: "Raj",
                value: 27000
            }],
            resize: true
        });
    });
</script>

это те данные, которые я хочу принести из базы данных, пожалуйста, предложите


ниже приведено то, что я пробовал до сих пор

[WebMethod]
public static List<ChartDetails> GetPiechartData()
{
    using (SqlConnection con = new SqlConnection(ApConfig.GetConectionString))
    {
        SqlCommand cmd = new SqlCommand("Usp_Getdata", con);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = cmd;
        DataTable dt = new DataTable();
        da.Fill(dt);

        List<ChartDetails> dataList = new List<ChartDetails>();

        foreach (DataRow dtrow in dt.Rows)
        {
            ChartDetails details = new ChartDetails();
            details.PlanName = dtrow[0].ToString();
            details.PaymentAmount = Convert.ToInt32(dtrow[1]);

            dataList.Add(details);
        }
        return dataList;
    }
}


и по сценарию

<script type="text/javascript">
    $(function () {
        debugger;
        $.ajax(
        {
            type: 'POST',
            dataType: 'json',
            contentType: 'application/json',
            url: 'Home.aspx/GetPiechartData',
            data: '{}',
            success: function (response) {
                Morris.Donut({
                    element: 'donut-example',
                    data: response
                });
            },

            error: function () {
                alert("Error loading data! Please try again.");
            }
        });
    })
</script>

<div class="col-md-3 col-sm-12 col-xs-12">
    <div class="panel panel-default">
        <div class="panel-heading">
            Donut Chart Example
        </div>
        <div class="panel-body">
            <div id="morris-donut-chart"></div>
        </div>
    </div>
</div>

2 Ответов

Рейтинг:
2

shahir Kolakkattil

Большое спасибо. это работает на меня


Torakami

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

Рейтинг:
18

Torakami

Всем привет ,

никто не ответил на этот вопрос, так как может быть очень мало тех, кто действительно работал над диаграммами morris js. Я проверил онлайн, но я также нашел только ограниченные данные и документацию из интернета. после стольких ресерчей и привязок я получил решение отобразить диаграмму Морриса Данута в asp.net

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

http://idevexplorer.com/2014/11/morris-js-chart-in-an-mvc-application/[^]

выше ссылка имеет отличные примеры, приведенные для ссылки, как использовать paramnters и все, но они не показали, как генерировать динамически

<script type="text/javascript">
    $(document).ready(function () {
        Morris.Donut({
            element: 'morris-donut-chart',
            data: $.parseJSON(Graph()),
            resize: true
        });
    });

    function Graph() {
        var data = "";
        $.ajax({
            type: 'POST',
            url: 'Home.aspx/GetPiechartData',
            dataType: 'json',
            async: false,
            contentType: "application/json; charset=utf-8",
            data: {},
            success: function (result) {
                data = result.d;
            },
            error: function (xhr, status, error) {
                alert(error);
            }
        });

        return data;
    }
</script>


<div class="col-md-3 col-sm-12 col-xs-12">
    <div class="panel panel-default">
        <div class="panel-heading">
            Donut Chart Example
        </div>
        <div class="panel-body">
            <div id="morris-donut-chart"></div>
        </div>
    </div>
</div>



и на мой отделенного кода я позвонил мой веб-метод

[WebMethod]
      public static string GetPiechartData()
      {
          using (SqlConnection con = new SqlConnection(ApConfig.GetConectionString))
          {
              SqlCommand cmd = new SqlCommand("Usp_Getdata", con);
              cmd.CommandType = CommandType.StoredProcedure;
              SqlDataAdapter da = new SqlDataAdapter();
              da.SelectCommand = cmd;
              DataTable dt = new DataTable();
              da.Fill(dt);

              List<GraphData> dataList = new List<GraphData>();

              foreach (DataRow dtrow in dt.Rows)
              {
                  GraphData details = new GraphData();
                  details.label = dtrow[0].ToString();
                  details.value = dtrow[1].ToString();

                  dataList.Add(details);
              }

              //oper = null which means its first load.
              var jsonSerializer = new JavaScriptSerializer();
              string data = jsonSerializer.Serialize(dataList);
              return data;
          }
      }


убедитесь, что вы используете метку и значение, чтобы заставить его работать из класса


NekoNao

как вы вызываете эту функцию?

Torakami

функция javascript вызывается автоматически, так как она написана внутри метода document. ready, и оттуда я делаю ajax-вызов webmethod, который приносит данные и завершает рендеринг диаграммы

Torakami

убедитесь, что вы используете метку и значение, чтобы заставить его работать из класса

MayankSemwal

используя вышеизложенное я получаю такой результат
"[{\"Year\":2013,\"a\":30,\"b\":20},{\"Year\":2014,\"a\":75,\"b\":65},{\"Year\":2015,\"a\":50,\"b\":40},{\"Year\":2016,\"a\":75,\"b\":65}]"
вместо ожидаемого результата. Пожалуйста, помогите мне. P. S Я использую жестко закодированные данные, передаваемые из C#.

Torakami

Пожалуйста, проверьте мое решение .. Я дал решение для извлечения данных из sql с использованием c# в качестве языка и ado.net

MayankSemwal

график общественного ActionResult ()
{
GraphModel oGraphModel = null;
GraphDataList lstGraphDataList = новый GraphDataList();
lstGraphDataList.ListOfGraphData = новый список & lt;graphmodel>();
int index = 0;
Random random = новый случайный();
в то время как (индекс < 10)
{
oGraphModel = новая Графомодель();
oGraphModel.метка = Датавремя.Сейчас.AddDays(индекс).ToString("ДД-ММ-гггг");
oGraphModel.значение = конвертировать.ToString(random. Next (index, 5000));
oGraphModel.а = конвертировать.ToString(индекс + 2000);
lstGraphDataList.ListOfGraphData. Add(oGraphModel);
индекс++;
}
var jsonSerializer = новый JavaScriptSerializer();
строковые данные = jsonSerializer.Сериализация (lstGraphDataList);
return Json(data, JsonRequestBehavior.AllowGet);
}




< script type= "text/javascript">
$(документ).готово(функция () {
новый Моррис.Линия({
элемент: "линейный график",
граф данных(),
xkey: 'a',
ykeys: ['value'],
асинхронные: правда,
метки: ['value'],
lineColors: ['#D9534F'],
ширина линии: '2px',
hideHover: правда
});

новый Моррис.Область({
элемент: 'area-chart',
граф данных(),
xkey: 'a',
ykeys: ['value'],
асинхронные: правда,
метки: ['value'],
lineColors: ['#428BCA'],
ширина линии: '2px',
hideHover: правда
});

});

график функций() {
ВАР сведения = "";
$.Аякс({
тип: "получить",
url: "/ HomeController/Graph/",
тип данных: 'json',
асинхронные: правда,
contentType: "application/json; charset=utf-8",
данные: { },
успех: функция (результат) {
данные = результат;
},
ошибка: функция (xhr, статус, ошибка) {
предупреждение(ошибка);
}
});

возвращать данные;
}
< / script>