1

DevExpressコンポーネントを使用して、C#でダッシュボードアプリケーションを作成しています。円形のゲージを動的に作成し、コールバック関数を使用してゲージの値を更新しようとしています。こちらのDevExpressサンプル:

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

これらは、設計時にフォームにすでに追加されているゲージを更新する方法を示しています。サンプルの呼び出しの1つには、var gague =window[gaugeName]があります。

この関数を呼び出すと、値は定義されていない状態で返されます。

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に別の「プロキシ」機能を使用することで、さらに混乱/醜いものになっています。

さて、が使用されなかったか、正しい名前がどこかに渡されなかったのではないかと思うので未定義と評価されますが、..ClientInstanceNamewindow[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 に答える