0

我有一个 Kendo UI datawiz 组件 RadialGauge,我想为它提供实时数据。它是使用 asp.net 包装器设置的,如下所示(从 kendo 演示中截取):

    <div id="gauge-container-center">
        @(Html.Kendo().RadialGauge()
              .Name("tensionGauge")
              .Pointer(pointer => pointer.Value(28))
              .Scale(scale => scale
                                  .MinorUnit(5)
                                  .StartAngle(-60)
                                  .EndAngle(240)
                                  .Max(180)
                                  .Labels(labels => labels
                                                        .Position(GaugeRadialScaleLabelsPosition.Inside)
                                  )
                                  .Ranges(ranges =>
                                      {
                                          ranges.Add().From(80).To(120).Color("#ffc700");
                                          ranges.Add().From(120).To(150).Color("#ff7a00");
                                          ranges.Add().From(150).To(180).Color("#c20000");
                                      })
              )
              )

    </div>

所有底层功能都是用于“实时”数据的设置和工作正常。我唯一的问题是如何将 signalR 值输入.Pointer(pointer => pointer.Value(signalRValueHere)部件。关于如何做到这一点的任何建议?结合这两个框架的例子似乎还不是很多,所以搜索结果很少。

4

1 回答 1

0

好的,所以我使用不同的方法解决了这个问题。我选择使用 javascript-initializer 代替,允许我在脚本中使用 SignalR 值。

            function createGauge() {
                $("#tensionGauge").kendoRadialGauge({
                    pointer: {
                        value: 0,
                        color: "black",
                    },
                    cap: {
                        color: "white",
                        size: 1
                    },
                    scale: {
                        minorUnit: 50,
                        majorUnit: 100,
                        startAngle: -50,
                        endAngle: 230,
                        min: @Convert.ToInt32(Model.MinTensionRange),
                        max: @Convert.ToInt32(Model.MaxTensionRange),
                        labels: {
                            position: "inside"
                        },
                        ranges: [ // TODO: Fetch limits from signalR or Model
                            {
                                from: 300,
                                to: 100, 
                                color: "#ffc700"
                            },{
                                from: -300,
                                to: -100, 
                                color: "#ffc700"
                            }, {
                                from: @Convert.ToInt32(Model.MinTensionRange),
                                to: -300, 
                                color: "#c20000"
                            },{
                                from: @Convert.ToInt32(Model.MaxTensionRange),
                                to: 300, 
                                color: "#c20000"
                            }
                        ]
                    }
                });
            }
            $(document).ready(function () {
                createGauge();
            });

以及更新值的 js 部分:

messageHub.client.notifyTension = function (tensionMessage) {
    $('#tensionGauge').data("kendoRadialGauge").value(tensionMessage);
};
于 2013-07-18T10:18:20.283 回答