仅获取值已更改的文本框
本文关键字:文本 获取 | 更新日期: 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;
}
}