Обновить текстовое поле в БД, пока текстовое поле имеет фокус - PullRequest
4 голосов
/ 15 июля 2011

Я ищу лучшее решение для обновления текстового значения текстового поля в БД, в то время как текстовое поле все еще содержит фокус. Я не хочу делать это для событий TextChanged или Leave, принимая во внимание, что мне нужно запросить фактическое значение из БД, даже когда текстовое поле содержит фокус и пользователь перестал печатать.

Ответы [ 2 ]

1 голос
/ 15 июля 2011
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 событие txtMyTextBox проверит, остановлен ли Timer, и если да, перезапустите его.

X - это количество секунд после того, как, если ввод не получен, вы решаете, что пользователь прекратил печатать.

Учитывая, что текстовых полей много, это может быть очень громоздким: S Так что я согласен, что должен быть лучший способ.

0 голосов
/ 15 июля 2011

Я бы пошел другим путем:

Сначала определите, когда вы предполагаете, что пользователь прекратил печатать.LostFocus является очень хорошим показателем, потому что пользователь явно покинул текстовое поле.Тайм-аут гораздо менее надежен, потому что пользователь может медленно печатать или отвлекаться.Если программа затем изменит текст, это может ввести пользователя в заблуждение.

Вы даже можете создать элемент управления текстовым полем с двумя значениями: одно поле ввода, в которое пользователи вводят, другое поле (только для чтения), отображающее текущее значение в базе данных.Этот элемент управления может иметь кнопку, позволяющую пользователю принять значение из базы данных.

Все это похоже на попытку уклониться от неприятной стороны классической проблемы оптимистичного параллелизма: что, если значение в базе данных изменяется во времяedit?

Решение, которое вы создаете здесь, имеет много накладных расходов, которые могут не стоить этого (взгляните на сетевой трафик ...) Просто позвольте пользователю ввести значение.Передайте его обратно в базу данных, поймайте конфликты и позвольте пользователю справиться с конфликтом.Это будет гораздо лучше масштабироваться и намного проще в реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...