ASP.NET MVC AMCharts Динамический из базы данных - PullRequest
0 голосов
/ 21 февраля 2019

Я передаю данные из базы данных в AMCharts с помощью SQL-запроса и помещаю их в пакет просмотра.Но нет выхода.Я пытался сделать это на JSON, но я не имею ни малейшего представления о том, как он работает.

Может кто-нибудь указать, что не так в моем коде?или помогите мне это исправить.

вот моя модель:

public partial class Test
{
    public string wdsection { get; set; }
    public int secCount { get; set; }

}

вот мой код:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<!--amcharts start here-->
<script type="text/javascript" src="http://www.amcharts.com/lib/3/amcharts.js"></script>
<script type="text/javascript" src="http://www.amcharts.com/lib/3/pie.js"></script>
<script type="text/javascript" src="http://www.amcharts.com/lib/3/themes/none.js"></script>
<!--amchart end here-->

<div id="chartdiv"></div>

<script type="text/javascript">

    function createChart() {
        debugger;
        var chartData2 =
            [
                @ViewBag.DataPoints.ToString()
            ];
        var chartDataResults = new Array();
        $.ajax({
            type: 'POST',
            dataType: 'json',
            contentType: 'application/json',
            url: '@Url.Action("GetSecCount", "Home")',
            data: {},
            success: function (response) {
                var aData = response.dataPoints;
                
                for (var i = 0; i < aData.length; i++) {
                    var section = aData[i].wdsection;
                    alert(section);
                    chartDataResults.push({
                        wdsection: wdsection
                    });
                }

                // create the chart here
                // PIE CHART
                chart = new AmCharts.AmPieChart();

                // title of the chart
                chart.addLabel("0", "!20", "World", "center", 16);

                chart.backgroundAlpha = 0.4;
                chart.backgroundColor = "#000000";
                chart.dataProvider = chartDataResults;
                chart.titleField = "wdsection";
                chart.valueField = "secCount";
                chart.sequencedAnimation = true;
                chart.startEffect = "elastic";
                chart.labelsEnabled = false;
                chart.labelText = "[[title]]";
                chart.startDuration = 2;
                chart.labelRadius = 10;

                // WRITE
                chart.write("chartdiv");
            }
        });
    }

    $(document).ready(createChart);

</script>

вот мой контроллер:

public ActionResult Index()
    {
        using (SqlConnection sqlcon = new SqlConnection(connstring))
        {
            List<Test> secCounts = new List<Test>();
            SqlCommand cmd = new SqlCommand("select a.wdsection,count(*) as secCount from DB_CIS.dbo.withdraw_tbl a, DB_CIS.dbo.item_tbl b where a.addqtyid = b.Item_ID and b.category = 'CONSUMABLES' group by wdsection", sqlcon);
            cmd.CommandType = CommandType.Text;
            cmd.CommandTimeout = 1000000;
            sqlcon.Open();
            SqlDataReader rdr = cmd.ExecuteReader();

            while (rdr.Read())
            {
                Test secs = new Test();
                secs.wdsection = rdr["wdsection"].ToString();
                secs.secCount = Convert.ToInt32(rdr["secCount"]);
                secCounts.Add(secs);
            }
            ViewBag.Locs = secCounts.ToList();
            ViewBag.DataPoints = JsonConvert.SerializeObject(secCounts.ToList(), _jsonSetting);
        }
...