2012-06-29 54 views
1

我正在使用DevExpress組件在C#中編寫Dashboard應用程序。我正在嘗試動態創建一個圓形量表,並使用回調函數更新量表值。在DevExpress的樣品在這裏:JavaScript中的Window []函數Dev Express

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

他們展示如何更新已經被添加到在設計時的形式計。他們的一個樣品中的電話都有VAR gague =窗口[gaugeName]

當我做了調用該函數的值回來undefiend:

function PerformCallbackCore(gaugeName) { 

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

有誰可能知道爲什麼我不能取回規值?

感謝拉里 -

回答

2

它是在計演示由於糟糕的代碼。是的,我使用(並支付)DX;我可以這麼說。

該代碼使用setTimeout與一個字符串(足夠ick這裏!),並通過在窗口屬性分配給控制與ClientInstanceName的「名稱」(代碼將不起作用,如果使用的名稱和這不匹配向上)。由於Gauge1 ... GaugeN具有不同的「代理」功能,演示代碼更加令人困惑/醜陋。現在

,我嫌疑ClientInstanceName未使用或正確的名稱未通過的地方,但是這樣window[aPropertyName]計算結果爲不確定,..

..一個更好的方式來寫這將是直接使用/傳遞對象,而不是依賴人爲的「客戶端名稱」/窗口屬性。見 ASPxClientGaugeControl(並按照鏈接到appropriate handler),並考慮這個問題:

<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 :-) 
} 

快樂編碼!

+0

非常感謝!當我回家時我會測試這個。 – CodeMan5000

相關問題