2011-07-15 13 views
4

テキストボックスにフォーカスが含まれている間、テキストボックスのテキスト値をDBに更新する最適なソリューションを探しています。テキストボックスにフォーカスが含まれていてユーザーが入力をやめたときでも、DBから実際の値を照会する必要があることを考慮して、TextChangedまたはLeaveイベントでは行いません。 txtMyTextBoxテキストボックスにフォーカスがある間、テキストボックステキストをDBに更新します。

+0

これは私たちがここで何を返すかを見るのが大好きですが、textchangedイベントテキストボックスの – V4Vendetta

+0

にはまだフォーカスがあります。 – Reniuz

+1

テキストが変更されていない場合やフォーカスが外れている場合は、他の(?のみ)可能性はX秒ごとです。それとも私は何を欠場したのですか? –

答えて

1
Every X seconds (Using a Timer) 

    if (txtMyTextBox.Text != previousText) 
     previousText = txtMyTextBox.Text; 
    else //(if the text is the same before X seconds) 
     //User has stopped typing! Save it to the database 
     //Stop the timer! 

TextChangeイベントがTimerが停止しているかどうかを確認し、そうならば、それを再起動します。

xは、入力が受信されない場合は、ユーザーが入力を停止した後の秒数です。

多くのテキストボックスがあると、これは非常に面倒になることがあります。だから私は確かに良い方法があるはずです。

0

私は別の道を行くだろう:あなたは、ユーザーが入力を停止したと仮定したときに

最初に定義します。ユーザーが明示的にテキストボックスを去ったので、LostFocusは非常に良い表示です。タイムアウトは、ユーザーの入力が遅くなったり、気を散らす可能性があるため、信頼性が低くなります。プログラムを変更してテキストを変更すると、ユーザーを混乱させる可能性があります。

2値のテキストボックスコントロールを作成することもできます.1つの入力フィールドにはユーザー入力を受け入れ、もう1つのフィールドはデータベースの現在の値を示します。このコントロールには、ユーザーがデータベースから値を受け入れるためのボタンがあります。

これは古典的なオプティミスティックな並行性の問題の厄介な点を回避しようとしているような感じです。編集中にデータベースの値が変更された場合はどうなりますか?

ここで作成するソリューションには、それほど価値がない可能性があるオーバーヘッドがたくさんあります(ネットワークトラフィックを見てください)。ユーザーが値を入力できるようにします。それをデータベースに戻し、競合をキャッチし、ユーザーが競合を処理できるようにします。これははるかに優れており、実装がはるかに簡単です。

関連する問題