我在asp.net应用程序中有很多文本框,在提交它们的值之后我想在它再次加载时清除所有字段?
答案 0 :(得分:14)
您需要在function
submit
public static void EmptyTextBoxes(Control parent)
{
foreach (Control c in parent.Controls) {
if (c.GetType() == typeof(TextBox))
{
((TextBox)(c)).Text = string.Empty;
}
}
}
参考
答案 1 :(得分:4)
这用于清除文本框,复选框,radioButton
等形式的所有控件你可以添加你想要的不同类型..
private void ClearTextBoxes(Control control)
{
foreach (Control c in control.Controls)
{
if (c is TextBox)
{
((TextBox)c).Clear();
}
if (c.HasChildren)
{
ClearTextBoxes(c);
}
if (c is CheckBox)
{
((CheckBox)c).Checked = false;
}
if (c is RadioButton)
{
((RadioButton)c).Checked = false;
}
}
}
答案 2 :(得分:0)
您可以使用JavaScript表单reset()方法或循环遍历所有文本框,并将Text属性设置为空字符串。
foreach(var control in this.Controls){
TextBox tb = control as TextBox;
if (tb != null)
{
tb.Text = string.Empty;
}
}
答案 3 :(得分:0)
您可以在页面中执行此操作:
foreach (var tb in Controls.OfType<TextBox>())
{
tb.Text = null;
}
如果您需要清除它们的整个层次结构,请从页面中调用一次:ClearTextBoxes(this);
这是功能:
private void ClearTextBoxes(Control c) {
foreach (var tb in c.Controls.OfType<TextBox>())
{
tb.Text = null;
}
foreach (var control in c.Controls) {
ClearTextBoxes(control); //Recurse down to children
}
}
答案 4 :(得分:0)
public static Control[] FlattenHierachy(Control root)
{
List<Control> list = new List<Control>();
list.Add(root);
if (root.HasControls())
{
foreach (Control control in root.Controls)
{
list.AddRange(FlattenHierachy(control));
}
}
return list.ToArray();
}
private void ClearTextBoxes()
{
Control[] allControls = FlattenHierachy(Page);
foreach (Control control in allControls)
{
TextBox textBox = control as TextBox;
if (textBox != null)
{
textBox.Text = "";
}
}
}
此代码将收集列表中的所有文本框,并将其textproperty设置为“”。
答案 5 :(得分:0)
那么你可以将字段设置为不使用viewstate,这意味着性能的提升,虽然很小,但仍然是一种提升。 同样,您可以执行response.redirect到同一页面或server.transfer 如果这两个解决方案不适合您,您可以使用textbox.text = string.empty和dropdowlist.clearselection。它们可能没有你想要的那么快,它们更优雅。
答案 6 :(得分:0)
完全没有尝试的解决方案:
你不能在Init或LoadViewState事件处理程序中使用ME.ViewState.Clear()吗?
或者它可能是Page.Viewstate.Clear()甚至是Page.ClearChildViewState()......
对不起 - 没有在愤怒中试过......
答案 7 :(得分:0)
这是一个老问题,但我只想添加以下内容,如果控件位于组框中,您可以这样做,然后:
foreach (Control c in this.form.Controls)
{
//Tests each control to see if it is a GroupBox
if (c is GroupBox)
{
clearRadioButtons(c.Controls);
clearListBox(c.Controls);
resetDateTime(c.Controls);
clearTextBoxes(c.Controls);
clearComboBoxes(c.Controls);
}
}
public static void clearTextBoxes(Control.ControlCollection controls)
{
//Loops through all controls on form
foreach (Control c in controls)
{
//Tests each control to see if it is a textbox
if (c is TextBox)
{
//Converts to useable format and clears textboxes
var text = (TextBox)c;
text.Clear();
}
}
}
答案 8 :(得分:-1)
创建一个名为cleardata()
的函数:
void cleardata()
{
textbox1.Clear();
textbox2.Clear();
textbox3.Clear();
textbox4.Clear();
}
并在需要时调用此函数。