有2个用户控件,一个在另一个内。
这些控件位于.aspx上。
一个控件是模态弹出窗口,另一个控件是自定义搜索控件(搜索控件位于模态弹出窗口内)。
用户完成搜索并关闭表单后,下次弹出窗口(对于同一用户)时,旧值仍然存在。
每次表单加载时如何清除值?
编辑: 是否可以捕获弹出结束事件?
答案 0 :(得分:3)
您可以使用javascript清除所有值 - 这是使用jquery的示例:
答案 1 :(得分:3)
对于我目前维护的一个应用程序,我们使用递归函数来重置控件中的所有字段。我在下面添加了它,但记住它用于C#windows应用程序而不是Web应用程序。希望它有所帮助。
public static void ResetFields(Control.ControlCollection pageControls)
{
foreach (Control contl in pageControls)
{
var strCntName = (contl.GetType()).Name;
switch (strCntName)
{
case "Button":
contl.Enabled = true;
break;
case "TextBox":
var txtSource = (TextBox)contl;
txtSource.Text = "";
break;
case "ListBox":
var lstSource = (ListBox)contl;
lstSource.SelectedIndex = -1;
lstSource.Enabled = true;
break;
case "ComboBox":
var cmbSource = (ComboBox)contl;
cmbSource.SelectedIndex = -1;
cmbSource.Enabled = true;
break;
case "DataGridView":
var dgvSource = (DataGridView)contl;
dgvSource.Rows.Clear();
break;
case "CheckBox":
var chkSource = (CheckBox)contl;
chkSource.Checked = false;
chkSource.Enabled = true;
break;
}
ResetFields(contl.Controls);
}
}
答案 2 :(得分:2)
事实证明,控件上没有方法可以清除控件上的值。
所以我要做的是在搜索控件上创建方法以清除控件并在弹出控件上创建一个方法来捕获弹出窗口打开或关闭事件以触发clear方法。
起初我无法改变控制......因为解释说这是解决问题的唯一方法,控制权可以改变......谢谢上帝!由于该方法不是默认选项,因此不会影响控件的使用。
答案 3 :(得分:1)
假设这个用户控件有一些与之关联的客户端JS代码,我会修改控件以在关闭模式弹出窗口时清除其搜索值和结果。
这将确保何时重新打开模态弹出窗口以进行新搜索。
Sys.Application.add_init
在这种情况下不起作用,因为只有在加载页面时才会运行一次。
取消或关闭模型弹出窗口时,您需要编写一些新的JS。
修改控件将是您的最佳选择,因此使用此控件的所有其他页面都可以利用新的重置功能。</ p>
目前很难在不知道您的网页结构,用户控件和任何现有的javascript的情况下向您提供任何更具体的信息。