2012-06-29 2 views
1

Я пишу приложение Dashboard на C#, используя компоненты DevExpress. Я пытаюсь динамически создавать круговой калибр и обновлять значение датчиков с помощью функции обратного вызова. В образце DevExpress здесь:Функция Window [] в javascript Dev Express

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

Они показывают, как обновить датчик, который уже был добавлен в форму во время разработки. Один из вызовов в их выборке имеет уаг 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] имеет значение не определено, однако ..

.. лучший способ, чтобы написать это было бы использовать/передавать объект напрямую, вместо того чтобы полагаться на искусственное свойство «имя клиента»/window. См 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

Смежные вопросы