1

我正在使用 DevExpress 组件在 C# 中编写仪表板应用程序。我正在尝试动态创建一个圆形仪表,并使用回调函数更新仪表值。在此处的 DevExpress 示例中:

http://demos.devexpress.com/ASPxGaugesDemos/Gauges/CircularGauge.aspx

他们展示了如何更新在设计时已经添加到表单中的仪表。他们样本中的一个调用有 var gague = window[gaugeName]

当我调用此函数时,值会返回 undefiend:

function PerformCallbackCore(gaugeName) {

var gauge = window[gaugeName];
m_isDirty = gauge.InCallback();
if (!m_isDirty)
    gauge.PerformCallback();
}

有谁可能知道为什么我无法检索仪表值?

谢谢 - 拉里

4

1 回答 1

2

这是由于仪表演示中的错误代码。是的,我使用(并支付)DX;我可以这么说。

代码setTimeout与字符串一起使用(这里够坏了!)并传入分配给控件的窗口属性的“名称” ClientInstanceName(如果使用的名称与此不匹配,则代码将不起作用)。由于 Gauge1 ... GaugeN 具有不同的“代理”功能,演示代码更加混乱/丑陋。

现在,我怀疑ClientInstanceName使用或未在某处传递正确的名称,因此window[aPropertyName]评估为未定义,但是..

..编写它的更好方法是直接使用/传递对象,而不是依赖人为的“客户端名称”/窗口属性。请参阅 ASPxClientGaugeControl(并按照相应处理程序的链接)并考虑这一点:

<ClientSideEvents EndCallback="onEndGaugeCallback" />

使用单个统一回调(并且明显缺乏“客户端名称”和无用的代理方法):

function onEndGaugeCallback (s, e) {
   // "s" is for Sender; it evaluates to the appropriate [Gauge] control
   // or rename it to "gauge" or whatever :-)
}

快乐编码!

于 2012-06-29T23:07:49.917 回答