如何处理UserControl事件

时间:2016-08-31 08:55:29

标签: c# asp.net user-controls

我有一个usercontrol,包含3个空分钟文本框,名为txtMorningMinutes,txtAfternoonMinutes和txtCapacityMinutes。此UserControl在星期六和星期日在Userform控件外部和Webform内部的“保存”按钮的Webform中重复2次。

现在有一个条件是用户应输入一个小于txtCapacityMinutes的值,该值来自数据库。可以说txtCapacityMinutes的值是60。

现在用户在星期六早上输入名为txtMorningMinutes的文本框中的10并保存数据。它将被保存到数据库中。

现在,用户在星期六早上输入了一个名为txtMorningMinutes的文本框,并尝试保存数据。在txtMorningMinutes的OnTextChanged中保存数据之前,我们需要检查新输入的数据是否小于60的txtCapacityMinutes。由于新输入的数据70大于60,我们需要将其恢复为10。

TextChanged事件如下所示

protected void txtMorningMinutes_TextChanged(object sender, EventArgs e)
{

}

我应该在UserControl中保留10的初始值。如果它存储在UserControl的Page_Load事件中,它将重复2次,即,对于Saturday UserControl和Sunday UserControl。所以,我需要知道在哪里存储txtMorningMinutes.Text的前一个值,即10,并在OnTextChanged事件中必要时应用条件。

2 个答案:

答案 0 :(得分:1)

当用户聚焦文本框时,您可以在操作之前保存相关变量的副本。当用户单击“保存”按钮时,您可以根据需要执行检查并回滚到保存的变量值。

答案 1 :(得分:-1)

static string previousValue = "";
protected void Page_Load()
{
  if(!IsPostBack)
  {
       previousValue = "5";
  }
}

protected void txtMorningMinutes_TextChanged(object sender, EventArgs e)
{
 if(Convert.ToInt32(txtMorningMinutes.Text) > Convert.ToInt32(txtCapacityMinutes.Text))
{
 txtMorningMinutes.Text = Convert.ToInt32(txtMorningMinutes.Text) - Convert.ToInt32(txtCapacityMinutes.Text)
}
}