仅获取值已更改的文本框

本文关键字:文本 获取 | 更新日期: 2023-09-27 18:08:01

我有用户信息,当我从gridview点击名称它填充数据从SQL到文本框。如名字、姓氏、地址、电子邮件等。我有大约30个文本框和下拉列表。

我只想从文本框中获取值,该值已更改,并在sql查询中更新它们。例如:只有Middle Name和Address更改了,因此查询将只更新这些字段,而不是所有30个左右。

我试过这个只是为了测试,它不工作。什么好主意吗?

protected void btnUpdateChanges_Click(object sender, EventArgs e)
{
    tbFirstName.TextChanged += new EventHandler(txt_TextChanged);
    tbLastName.TextChanged += new EventHandler(txt_TextChanged);
    tbMiddleName.TextChanged += new EventHandler(txt_TextChanged);
}
void txt_TextChanged(object sender, EventArgs e)
{
    TextBox txt = sender as TextBox;
    switch (txt.ID)
    {
        case "tbFirstName":
            lblMessage.Text = "First Name changed";
            break;
        case "tbLastName":
            break;
        case "tbMiddleName":
            break;
    }
} 

仅获取值已更改的文本框

将初始值存储在会话变量中,然后更新它,然后在单击或其他操作时使用存储的会话更新数据库

为什么不子类化TextBox并让它告诉它是否已被修改?

代替文本框。Text = "某些文本"用户myTextBox。SetText("文本");

然后检查TextModified属性,看看当前文本是否与原始文本不同。

public class MyTextBox : TextBox {
    private string originalText = null;
    public MyTextBox()
        : base() {
    }
    public bool TextModified {
        get {
            if (this.OriginalText != this.Text) return true;
            return false;
        }
    }
    public string OriginalText {
        get { return this.originalText; }
        internal set { this.originalText = value; }
    }
    public void SetText(string text) {
        this.Text = text;
        this.OriginalText = text;
    }
}