ASP.NET遍历控件的⼏种⽅法
⽅法⼀:javascript法
function btnClear()
{
for(i=0;i<document.forms[0].elements.length;i++)
{
e=document.forms[0].elements[i];
pe=='text'||e.type=='textarea')
{
e.value="";
}
}
return false;
}
在Onclick OnFocus OnLoad等事件中引⽤就⾏
⽅法⼆:Foreach遍历
foreach(Control ctl in this.Page.Controls[1].Controls)
{
if(ctl.GetType() == typeof(TextBox))
{
TextBox t = (TextBox) ctl;
t.Text = string.Empty;
}
⽅法三:
#region 清空指定页⾯上所有的控件内容,public static void ClearAllContent()
/// <summary>
/// 清空指定页⾯上所有的控件内容,包括TextBox,CheckBox,CheckBoxList,RadioButton,RadioButtonList。但是不清/// 除如ListBox,DropDownList,因为这样的控件值对当前页⾯来说还可以⽤,⼀般这些控件⾥都是保存的字典数据。/// Author:Kevin
/// ⽇期:2004-12-02
/// </summary>
/// <param name="page"> 指定的页⾯</param>
public static void ClearAllContent(System.Web.UI.Control page)
{
int nPageControls = page.Controls.Count;
for (int i = 0; i < nPageControls; i++)
{
foreach (System.Web.UI.Control control in page.Controls[i].Controls)
{
if (control.HasControls())
{
ClearAllText(control);
}
else
{
if (control is TextBox)
(control as TextBox).Text = "";
if (control is CheckBox)
(control as CheckBox).Checked = false;
if (control is RadioButtonList)
(control as RadioButtonList).SelectedIndex = -1;
if (control is RadioButton)
(control as RadioButton).Checked = false;
if (control is CheckBoxList)
{
foreach (ListItem item in (control as CheckBoxList).Items)
{
item.Selected = false;
}
}
}//if..else
}//foreach
}//for
}
#endregion
⽅法四:
建⽴⼀个类,⽤于存放那些TextBox的name和value ,代码如下:
Public Class UtilityObj
Private _name As String
Private _value As String
Public Sub New(ByVal Name As String, ByVal Value As String)
_name = Name
_value = Value
End Sub
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal Value As String)
_name = Name
End Set
End Property
Public Property Value() As String
Get
Return (_value)
End Get
Set(ByVal Value As String)
_value = Value
End Set
End Property
End Class
这个类包含两个属性:"name" 和 "value",再定义⼀个公有的Arraylist(oArraylist),⽤于存储数据。如图:
要实现遍历ASP.NET页⾯所有的控件,我们还需要定义⼀个主要的⽅法。这个⽅法接收⼀个Control类型的参数,如果这个参数为textbox,则存储它的 name 和 value。
代码如下:
Public Sub LoopingControls(ByVal oControl As Control)
Dim frmCtrl As Control
oArrayList = New ArrayList
For Each frmCtrl In oControl.Controls
If TypeOf frmCtrl Is TextBox Then
oArrayList.Add(New UtilityObj(frmCtrl.ID, DirectCast(frmCtrl, TextBox).Text))
End If
If frmCtrl.HasControls Then
LoopingControls(frmCtrl)
End If
checkbox和radiobutton的区别
Next
End Sub
使⽤上⾯⽅法来实现遍历页⾯所有的控件
LoopingControls(Page)
DataGrid1.DataSource = oArrayList
DataGrid1.DataBind()
/
// <summary>
/// 遍历页⾯的label并赋值, /// </summary>
protected void RenameLabel()
{
foreach (Control ctr in this.pnlMaterial.Controls)
if (ctr.GetType().ToString() == "System.Web.UI.WebControls.Label")
{
//Response.Write("id:" + ctr.ID+ " text:" + ((Label)ctr).Text + "<br>");
if (ctr.ID.ToString().Length == 6)
{
int LabelId1 = Convert.ToInt32(ctr.ID.Substring(5, 1).ToString().Trim());
((Label)ctr).Text = BLL.EDI.EDIType.GetTypeName(LabelId1);
}
if (ctr.ID.ToString().Length == 7)
{
int LabelId2 = Convert.ToInt32(ctr.ID.Substring(5, 2).ToString().Trim());
((Label)ctr).Text = BLL.EDI.EDIType.GetTypeName(LabelId2);
}
}
}
}
/// <summary>
/
// 遍历dropdownlist赋值
/// </summary>
protected void SetDropDownListValue()
{
foreach (Control ctr in this.pnlMaterial.Controls)
{
if (ctr.GetType().ToString() == "System.Web.UI.WebControls.DropDownList")
{
//Response.Write("id:" + ctr.ID + " text:" + ((DropDownList)ctr).DataTextField.ToString() + "<br>"); if (ctr.ID.ToString().Length == 13)
{
int LabelId1 = Convert.ToInt32(ctr.ID.Substring(12, 1).ToString().Trim()); ((DropDownList)ctr).DataSource = BLL.EDI.EDIMaterial.List(LabelId1); ((DropDownList)ctr).DataValueField = "mName";
((DropDownList)ctr).DataTextField = "mCode";
((DropDownList)ctr).DataBind();
}
if (ctr.ID.ToString().Length == 14)
{
int LabelId2 = Convert.ToInt32(ctr.ID.Substring(12, 2).ToString().Trim()); ((DropDownList)ctr).DataSource = BLL.EDI.EDIMaterial.List(LabelId2); ((DropDownList)ctr).DataValueField = "mName";
((DropDownList)ctr).DataTextField = "mCode";
((DropDownList)ctr).DataBind();
}
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。