仅获取值已更改的文本框

时间:2014-06-09 16:26:03

标签: c# asp.net

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

我想从文本框中获取值已更改的值,并在sql查询中更新它们。例如:只有中间名和地址已更改,因此查询将仅更新此字段,而不是全部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;
    }
} 

2 个答案:

答案 0 :(得分:0)

将初始值存储在会话变量中,然后更新它,稍后通过单击或其他内容更新数据库中存储的会话。

答案 1 :(得分:0)

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

而不是textbox.Text ="一些文字" user myTextBox.SetText(" some text");

然后只需检查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;
    }

}