繁体   English   中英

在文本框具有焦点时将文本框文本更新到 DB

[英]Update text box text to DB while the text box has focus

我正在寻找在文本框仍包含焦点时将文本框文本值更新到 DB 的最佳解决方案。 我不想在 TextChanged 或 Leave 事件上执行此操作,考虑到即使文本框包含焦点并且用户停止输入,我也需要从 DB 查询实际值。

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!

txtMyTextBoxTextChange事件将检查Timer是否停止,如果是,则重新启动它。

X是秒数,如果没有收到输入,则您决定用户已停止输入。

鉴于有很多文本框,这可能会变得非常麻烦:S 所以我绝对同意应该有更好的方法。

我会 go 另一种方式:

首先定义您假设用户停止输入的时间。 LostFocus 是一个很好的指示,因为用户明确地离开了文本框。 超时的可信度要低得多,因为用户可能打字速度很慢或可能会分心。 然后让程序更改文本可能会使用户感到困惑。

您甚至可以创建一个双值文本框控件:一个输入字段接受用户输入,另一个(只读)字段显示数据库中的当前值。 该控件可能有一个按钮,允许用户接受来自数据库的值。

这一切感觉就像是在试图避开经典乐观并发问题中令人讨厌的一面:如果数据库中的值在编辑过程中发生变化怎么办?

您在此处创建的解决方案有很多开销,可能不值得(看看网络流量......)只允许用户输入一个值。 将其传回数据库,捕获冲突并允许用户处理冲突。 这将更好地扩展并且更容易实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM