2011-01-26 18 views
0

次のシナリオがあります。私のSLアプリケーションでは、RIAを使用してデータを取得しています。アプリケーションの最初のロード時に、データが正しく引き出され、データをフロントエンドにバインドします。Silverlight 4の値は設定されていますが、「間違った」値が取得されています

次に、いくつかのフィルタパラメータを変更し、返されるデータの1つのフィールドだけが変更されます。私はそれをたどってきましたが、確かに正しいデータを返すクエリには問題はありません。そこで、生成されたDomainServiceクラスにいくつかのブレークポイントを設定しました。しかし、

Set value of 285.8333

それが出て戻ってデータを取得することになると、ここで示したように、それは最初のページのロードのデータを引き出している:データはここに示したように正しく設定されている

Get value of 215.83333

誰かが私が間違っている可能性について助言してもらえますか?

+0

コードの残りの部分がわからなければ、何が起こっているのか正確に知ることは難しいです。たとえば、間違った記録を見ている可能性はありますか?また、変更をキャンセルするイベントを処理していますか?どのフィルタパラメータを変更しているのか表示できますか? –

+0

こんにちはデイブ、はい、それは難しいと私は同意し、私は可能な限り多くの詳細を提供しようとします。私は確かに間違ったレコードを見ていないし、値のセットと返された値が同じではないので、それはできません。私は全くイベントを処理していません。それはかなりバニラの操作、つまりデータを呼び出してコントロールにバインドすることです。私が変更しているフィルタパラメータは、日付、つまり操作の開始日と終了日です。 dbでは、利用可能な勤務時間はそれらの日付に基づいて計算され、変更される唯一の値です。 – DavidS

答えて

0

私はそれを修正する方法を開発しましたが、なぜ物事が彼らのやり方で行動するのかわからないのです。

私が行っている操作についてはもう少し詳しく説明します。私が選んだデータとフィルタでは、私は一貫して3行のデータを取得すると仮定します。開始日または終了日のフィルタパラメータを変更した場合の唯一の違いは、workHoursAvailable値は変更されますが、Webサービスメソッドを呼び出すと何らかの理由でこれらの変更が反映されないことです。

私がしたことを「解決する」ことはこれでした。私は、それぞれを識別する一意のIDをハックし、同じ行のデータに対して、フィルタを変更した後にユニークなIDが変更されることを保証しました。それが起こったとき、私のWebサービスメソッドから正しいworkHoursAvailableが呼び出されます。

私はバックグラウンドで何が起こっているのか推測したくはありませんが、これを読んでいる人が分かっていれば説明を残してください。


さらに調査後、私はこの

http://forums.silverlight.net/forums/p/120834/462505.aspx

を発見し、効果的に私は例えば、私のドメインコンテキストをクリアしなければなりませんでした DomainContext.EntityContainer.Clear();

関連する問題