我有用户信息,当我从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;
}
}
答案 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;
}
}