Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何使用动态创建的谷歌图表发布流程?_Asp.net Mvc_Charts_Asp.net Core_Google Visualization - Fatal编程技术网

Asp.net mvc 如何使用动态创建的谷歌图表发布流程?

Asp.net mvc 如何使用动态创建的谷歌图表发布流程?,asp.net-mvc,charts,asp.net-core,google-visualization,Asp.net Mvc,Charts,Asp.net Core,Google Visualization,我有一个图表,看起来像这样: 数据来自web服务,我希望所有数据在进入模型时保持完整。图表上的条形图表示时间跨度(只是显示timespan.TotalHours的数字列) 偶尔,如图所示,一个时间跨度将是负面的-这意味着它提前了计划。在这种情况下,我根本不想显示该段,事实上我想从绿色段中减去该时间。从我所看到的,可以帮助我实际减去负数的东西可以是后处理。但在完成之后,我如何才能修改图表创建 如果相关,图表的创建代码如下: <script type="text/javascript"&g

我有一个图表,看起来像这样:

数据来自web服务,我希望所有数据在进入模型时保持完整。图表上的条形图表示时间跨度(只是显示timespan.TotalHours的数字列)

偶尔,如图所示,一个时间跨度将是负面的-这意味着它提前了计划。在这种情况下,我根本不想显示该段,事实上我想从绿色段中减去该时间。从我所看到的,可以帮助我实际减去负数的东西可以是后处理。但在完成之后,我如何才能修改图表创建

如果相关,图表的创建代码如下:

 <script type="text/javascript">
        google.charts.load('current', { 'packages': ['corechart'] });
        google.charts.setOnLoadCallback(drawChart);

        function drawChart() {
            var data = new google.visualization.DataTable(); 

            // Since every row will alwyas have this as the first column, we do not need to iterate. The first column will always be this title.
            data.addColumn("string", "Category"); 

            // This iterates through each stage (timespan) and creates a column for it.  
            // And display only the relavent time spans on the chart.
            @foreach (var stage in Model.selectedForm.rows[0].stages) 
            {
                @Html.Raw("data.addColumn('number', '" + Regex.Replace(stage.label, "(\\B[A-Z])", " $1") + "');") // Adding a numeric column for each timespan (stage) in that row. Using Regex to make the labels more friendly to the user.
            }


            @foreach (var row in Model.selectedForm.rows)
            {
                @Html.Raw("data.addRow(['" + row.label + "'") //The first part of our row is the label - each subsequent stage will be filled in at each iteration below

                foreach (var stage in row.stages) //For each stage in the row being created ...
                {

                    if (stage.timespan.TotalHours <= 0)
                    {
                        @Html.Raw(", " + "null") // replace the column with a null value
                    }
                    else
                    {
                        @Html.Raw(", " + stage.timespan.TotalHours) //...Continue the HTML builder adding additional timespans to eventually...
                    }
                }

                @Html.Raw("]);\n\n") //...close it here
            }

            var options = {
                titlePosition: 'none',
                width: 1200,
                height: 400,
                legend: { position: 'top', maxLines: 3 },
                bar: { groupWidth: '75%' },
                isStacked: true
            }

            var chart = new google.visualization.BarChart(document.getElementById('SOPChart'));
            chart.draw(data, options);
        }

    </script>

load('current',{'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
函数绘图图(){
var data=new google.visualization.DataTable();
//因为每一行都有这个作为第一列,所以我们不需要迭代,第一列总是这个标题。
data.addColumn(“字符串”、“类别”);
//这将遍历每个阶段(timespan)并为其创建一列。
//并仅在图表上显示相关的时间跨度。
@foreach(Model.selectedForm.rows[0].stages中的var阶段)
{
@Html.Raw(“data.addColumn('number'),“+Regex.Replace(stage.label,”(\\B[A-Z]),“$1”)+”;”//为该行中的每个时间跨度(stage)添加一个数字列。使用Regex使标签对用户更友好。
}
@foreach(Model.selectedForm.rows中的变量行)
{
@Html.Raw(“data.addRow(['“+row.label+””)//我们行的第一部分是标签-每个后续阶段将在下面的每次迭代中填写
foreach(varstage in row.stages)//对于正在创建的行中的每个阶段。。。
{

如果(stage.timespan.TotalHours如果您想在客户端上尝试javascript来纠正此问题

删除最后一次编辑并允许负值通过

然后使用下面的代码段进行更正,将其添加到-->
var options={

for (var i = 0; i < data.getNumberOfColumns(); i++) {
  if (data.getValue(i, data.getNumberOfColumns() - 1) < 0) {
    // subtract from next to last column
    data.setValue(i, data.getNumberOfColumns() - 2, data.getValue(i, data.getNumberOfColumns() - 2) + data.getValue(i, data.getNumberOfColumns() - 1));
    // remove negative from last column
    data.setValue(i, data.getNumberOfColumns() - 1, null);
  }
}
for(var i=0;i
建议在
foreach(row.stages中的var stage)中添加“if condition”
--输出替换值,而不是
stage.timespan.TotalHours
我不确定您的意思。如果上次创建的列中的值为负值(这是唯一可以为负值的列),我根本不想画最后一列,而是从上一列中减去值。希望这能让它更清晰一些。更新的代码在哪里?嘿@WhiteHat我添加了更新的代码和更新的图像。我仍然无法找到如何减去从上一段中删除的条的值。我已经查看了这似乎有助于后处理,但到目前为止还没有成功。