0

値がinteger:

google.load("visualization", "1", { packages: ["corechart"] });
    google.setOnLoadCallback(drawChart);
    function drawChart() {
        var Value1 = '@Model.Value1';
        var Value2 = '@Model.Value2';

        var tdata = new google.visualization.DataTable();

        tdata.addColumn('string', 'Years');
        tdata.addColumn('number', 'Values');
        tdata.addColumn({ type: 'string', role: 'tooltip', 'p': { 'html': true } });

        tdata.addRow(['1', Value1, createCustomHTMLContentYear1()]);
        tdata.addRow(['2', Value2, createCustomHTMLContentYear2()]);

        var options = { title: 'Value diagram for year' };

        var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
        chart.draw(tdata, options);
    }

createCustomHTMLContentYear1そしてcreateCustomHTMLContentYear2私のカスタム関数です。

ただし、値がdouble型の場合は機能しません。を使っparseInt(Value1)たのですが、その場合、倍の値が失われます。たとえば、0.3333は0になります。

double図に値を表示するようにコードを変更するにはどうすればよいですか?

前もって感謝します。

4

1 に答える 1

1

数値を文字列として入力するのはなぜですか?

var Value1 = '@Model.Value1';
var Value2 = '@Model.Value2';

する必要があります

var Value1 = @Model.Value1;
var Value2 = @Model.Value2;

@Modelそれがサーバー側のデータ要素を参照していると仮定します。そうすれば、型変換について心配する必要はありません。

何らかの理由で数値を文字列として入力する必要がある場合、適切な型変換関数は parseInt ではなく parseFloat です。

tdata.addRow(['1', parseFloat(Value1), createCustomHTMLContentYear1()]);
tdata.addRow(['2', parseFloat(Value2), createCustomHTMLContentYear2()]);

両方ではなく、これらのいずれかを実行する必要があります。

于 2013-08-05T14:27:38.567 に答える