各们师兄师姐们帮我救救急!怎样遍历Web Form中所有的常用控件,包括控件的中的子控件。

HarryandMark 2002-11-11 10:09:09
for(int i=0; i < form.Controls[1].Controls.Count;i++)
{string type = form.Controls[1].Controls[i].GetType().ToString().Trim();
switch(type)
{
case "System.Web.UI.WebControls.Label":
((Label)FindControl(form.Controls[1].Controls[i].ID)).Text = 值; break;
case "System.Web.UI.WebControls.Button":
((Button)FindControl(form.Controls[1].Controls[i].ID)).Text = 值;
break;
case "System.Web.UI.WebControls.CheckBox":
((CheckBox)FindControl(form.Controls[1].Controls[i].ID)).Text = 值;
break;
case "System.Web.UI.WebControls.DataGrid":
}}
我能找到像Label、Button等这样的不包含其他控件的控件。我现在的问题是:
1、怎样才能使所有在Web Form中的控件都找得到;
2、怎样才能让DataGrid及其包含其他控件上的所有控件被找到。在线等待!
...全文
75 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
saucer 2002-11-12
  • 打赏
  • 举报
回复
you need to go further, check DataGridTable's children DataGridItem's children TableCell's children controls, for example:

void ListControl(Control c)
{
string s = c.GetType().Name;
if (s != "DataGridTable" && s != "DataGridItem" && s != "TableCell" && s != "LiteralControl")
Response.Write(c.ID + ":" + c.GetType().Name +"<BR>");
if (c.Controls.Count > 0)
for (int i=0; i < c.Controls.Count; i++)
ListControl(c.Controls[i]);

}
saucer 2002-11-12
  • 打赏
  • 举报
回复
sorry, Recursion, :-)
saucer 2002-11-12
  • 打赏
  • 举报
回复
use Recurison, for example:

void ListControl(Control c)
{
Response.Write(c.ID + ":" + c.GetType().Name +"<BR>");
if (c.Controls.Count > 0)
for (int i=0; i < c.Controls.Count; i++)
ListControl(c.Controls[i]);
}


here is a complete example:

<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Data" %>
<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
String sConn = @"Provider=SQLOLEDB;Server=localhost;Database=NorthWind;UID=sa;PWD=;";

OleDbConnection conn = new OleDbConnection(sConn);
OleDbDataAdapter da = new OleDbDataAdapter("select * from Employees", conn);
DataSet ds=new DataSet();
da.Fill (ds,"Employees");

DataTable dt=ds.Tables["Employees"];

DataGrid1.DataSource=dt;
DataGrid1.DataBind ();
}

void ListControl(Object sender, EventArgs e)
{
Response.Write("list of controls:<BR>");
ListControl(this);
}

void ListControl(Control c)
{
Response.Write(c.ID + ":" + c.GetType().Name +"<BR>");
if (c.Controls.Count > 0)
for (int i=0; i < c.Controls.Count; i++)
ListControl(c.Controls[i]);

}
</script>
<form id="form1" runat="server">
<asp:datagrid id="DataGrid1" runat="server">
<Columns>
<asp:TemplateColumn HeaderText="Edit">
<ItemTemplate>
<asp:textbox id="txt" runat="server" text='<%# DataBinder.Eval(Container.DataItem,"LastName")%>' />
<asp:checkbox id="chk" runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
<asp:button id="btn" runat="server" onclick="ListControl" text="list"/>
</form>
<asp:label id="label1" runat="server" text="123" />
HarryandMark 2002-11-12
  • 打赏
  • 举报
回复
我绑定了数据,((DataGrid)form.Controls[i]).Controls.Count=1
我用了:
<asp:TemplateColumn HeaderText="Reason">
<ItemTemplate>
<asp:TextBox id="Textbox1" Text='<%# DataBinder.Eval(Container.DataItem, "age") %>' runat=server Width="80px"/>
</ItemTemplate>
</asp:TemplateColumn>
<asp:ButtonColumn Text="detail" ButtonType="PushButton" HeaderText="item detail"></asp:ButtonColumn>
但是我用:
for(int a = 0; a < ((DataGrid)form.Controls[i]).Controls.Count; a++)
{
Label5.Text = Label5.Text + "&" + ((DataGrid)form.Controls[i]).Controls[a].GetType() + "&";
}
运行后得到Label5.Text=&System.Web.UI.WebControls.DataGridTable&
而不是我定义的控件的类型。在线等待!
saucer 2002-11-12
  • 打赏
  • 举报
回复
I used ListControl(this); "this" is the Page object which also happens to be a Control

>>得到datagrid.Controls.Count的值为0
datagrid may not be bound to a datasource yet at that time
HarryandMark 2002-11-12
  • 打赏
  • 举报
回复
to saucer(思归):
void ListControl(Control c)
{
Response.Write(c.ID + ":" + c.GetType().Name +"<BR>");
if (c.Controls.Count > 0)
for (int i=0; i < c.Controls.Count; i++)
ListControl(c.Controls[i]);
}
<asp:button id="btn" runat="server" onclick="ListControl" text="list"/>
我想问你一下,ListControl(Control c)这个函数第一次执行时c表示什么?
还有我的DataGrid中有:
<asp:datagrid id="DataGrid1" runat="server">
<Columns>
<asp:TemplateColumn HeaderText="Edit">
<ItemTemplate>
<asp:textbox id="txt" runat="server" text='<%# DataBinder.Eval(Container.DataItem,"LastName")%>' />
<asp:checkbox id="chk" runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
还有一些Button.但是我用
private System.Web.UI.WebControls.DataGrid datagrid;
for (int i = 0; i < form.Controls.Count; i++)
{
string type = form.Controls[i].GetType().ToString().Trim();
switch(type)
{
case "System.Web.UI.WebControls.DataGrid":
datagrid = (DataGrid)form.Controls[i];
Label5.Text = Label5.Text + "|" + datagrid.Controls.Count + "|";
break;
}
}
得到datagrid.Controls.Count的值为0;
到底是怎么回事,在线等待!谢谢!
HarryandMark 2002-11-12
  • 打赏
  • 举报
回复
<data name="1Season">
<value>季节:</value>
</data>
<data name="2Season">
<value>季節:</value>
</data>
<data name="1Dpt">
<value>部门:</value>
</data>
<data name="2Dpt">
<value>部門:</value>
</data>
<data name="1Div">
<value>发货:</value>
</data>
<data name="2Div">
<value>發貨:</value>
</data>
<data name="1Search">
<value>查询</value>
</data>
<data name="fbutton9">
<value>查询</value>
</data>
<data name="1Company:">
<value>公司:</value>
</data>
<data name="2Company:">
<value>公司:</value>
</data>
<data name="1Cust Po:">
<value>客户订单编号:</value>
</data>
<data name="2Cust Po:">
<value>客戶訂單編號:</value>
</data>
<data name="1Cust Style:">
<value>客户款号:</value>
</data>
<data name="2Cust Style:">
<value>客戶款號:</value>
</data>
<data name="1Style:">
<value>款号:</value>
</data>
<data name="2Style:">
<value>款號:</value>
</data>
<data name="1Moudle:">
<value>模组:</value>
</data>
<data name="2Moudle:">
<value>模組:</value>
</data>
<data name="1Order No:">
<value>定单编号:</value>
</data>
<data name="2Order No:">
<value>定單編號:</value>
</data>
<data name="1Check Point:">
<value>检查点:</value>
</data>
<data name="2Check Point:">
<value>檢查點:</value>
</data>
<data name="1Expecute Time:">
<value>预计日期:</value>
</data>
<data name="2Expecute Time:">
<value>預計日期:</value>
</data>
<data name="1Actual Time:">
<value>实际日期:</value>
</data>
<data name="2Actual Time:">
<value>實際日期:</value>
</data>
<data name="1Remark :">
<value>备注:</value>
</data>
<data name="2Remark :">
<value>備注:</value>
</data>
<data name="1Resean:">
<value>理由:</value>
</data>
<data name="2Resean:">
<value>理由:</value>
</data>
<data name="1Complete">
<value>完成</value>
</data>
<data name="2Complete">
<value>完成</value>
</data>
<data name="1back">
<value>返回</value>
</data>
<data name="fbutton8">
<value>返回</value>
</data>
<data name="ddl_type1">
<value>定单编号</value>
</data>
<data name="fddl_type1">
<value>定單編號</value>
</data>
<data name="ddl_type2">
<value>客户订单编号</value>
</data>
<data name="fddl_type2">
<value>客戶訂單編號</value>
</data>
<data name="ddl_type3">
<value>客户名称</value>
</data>
<data name="fddl_type3">
<value>客戶名稱</value>
</data>
<data name="ddl_type4">
<value>客户款号</value>
</data>
<data name="fddl_type4">
<value>客戶款號</value>
</data>
<data name="ddl_type5">
<value>款号</value>
</data>
<data name="fddl_type5">
<value>款號</value>
</data>
<data name="daygrid2">
<value>客户订单编号</value>
</data>
<data name="fdaygrid2">
<value>客戶訂單編號</value>
</data>
<data name="daygrid3">
<value>客户款号</value>
</data>
<data name="fdaygrid3">
<value>客戶款號</value>
</data>
<data name="daygrid4">
<value>款号</value>
</data>
<data name="fdaygrid4">
<value>款號</value>
</data>
<data name="daygrid0">
<value>是/否</value>
</data>
<data name="fdaygrid0">
<value>是/否</value>
</data>
<data name="daygrid1">
<value>公司</value>
</data>
<data name="fdaygrid1">
<value>公司</value>
</data>
<data name="daygrid5">
<value>模组</value>
</data>
<data name="fdaygrid5">
<value>模組</value>
</data>
<data name="daygrid6">
<value>模组编号</value>
</data>
<data name="fdaygrid6">
<value>模組編號</value>
</data>
<data name="daygrid7">
<value>检查点</value>
</data>
<data name="fdaygrid7">
<value>檢查點</value>
</data>
<data name="daygrid8">
<value>期望日期</value>
</data>
<data name="fdaygrid8">
<value>期望日期</value>
</data>
<data name="daygrid9">
<value>完成日期</value>
</data>
<data name="fdaygrid9">
<value>完成日期</value>
</data>
<data name="daygrid11">
<value>备注</value>
</data>
<data name="fdaygrid11">
<value>備注</value>
</data>
<data name="daygrid12">
<value>理由</value>
</data>
<data name="fdaygrid12">
<value>理由</value>
</data>
<data name="daygrid13">
<value>记录描述</value>
</data>
<data name="fdaygrid13">
<value>記錄描述</value>
</data>
<data name="update">
<value>更新</value>
</data>
<data name="fupdate">
<value>更新</value>
</data>
<data name="record">
<value>详细资料</value>
</data>
<data name="frecord">
<value>詳細資料</value>
</data>
<data name="week1">
<value>星期日</value>
<comment></comment>
</data>
<data name="week2">
<value>星期一</value>
</data>
<data name="week3">
<value>星期二</value>
</data>
<data name="week4">
<value>星期三</value>
</data>
<data name="week5">
<value>星期四</value>
</data>
<data name="week6">
<value>星期五</value>
</data>
<data name="week7">
<value>星期六</value>
</data>
<data name="week0">
<value>星期</value>
</data>
<data name="more">
<value>更多...</value>
</data>
<data name="update">
<value>更新</value>
</data>
<data name="eweek1">
<value>Sun</value>
</data>
<data name="eweek2">
<value>Mon</value>
</data>
<data name="eweek3">
<value>Tue</value>
</data>
<data name="eweek4">
<value>Wed</value>
</data>
<data name="eweek5">
<value>Thu</value>
</data>
<data name="eweek6">
<value>Fri</value>
</data>
<data name="eweek7">
<value>Sat</value>
</data>
<data name="eweek0">
<value>Week</value>
</data>
</root>
HarryandMark 2002-11-12
  • 打赏
  • 举报
回复
<data name="english">
<value>English</value>
</data>
<data name="chinese1">
<value>中文简体</value>
</data>
<data name="chinese2">
<value>中文繁體</value>
</data>
<data name="1b_login">
<value>登录</value>
</data>
<data name="0b_login">
<value>Login</value>
</data>
<data name="1l_user">
<value>用户名 :</value>
</data>
<data name="0l_user">
<value>User:</value>
</data>
<data name="1l_password">
<value>密 码 :</value>
</data>
<data name="0l_password">
<value>Password:</value>
</data>
<data name="1l_language">
<value>语 言 :</value>
</data>
<data name="0l_language">
<value>Language:</value>
</data>
<data name="1l_usererror">
<value>用户名不能为空</value>
</data>
<data name="0l_usererror">
<value>User Can't be null</value>
</data>
<data name="1l_passerror">
<value>密码错误</value>
</data>
<data name="0l_passerror">
<value>Password incorrect!</value>
</data>
<data name="0l_title">
<value>Order Status System</value>
</data>
<data name="0c_savelogin">
<value>Save your login in this computer</value>
</data>
<data name="1l_title">
<value>定单状态系统</value>
</data>
<data name="2l_title">
<value>定單狀態系統</value>
</data>
<data name="2b_login">
<value>登錄</value>
</data>
<data name="2l_user">
<value>用戶名 :</value>
</data>
<data name="2l_password">
<value>密 碼 :</value>
</data>
<data name="2l_language">
<value>語 言 :</value>
</data>
<data name="2l_usererror">
<value>用戶名不能為空</value>
</data>
<data name="1c_savelogin">
<value>在本机上保存你的登录</value>
</data>
<data name="2c_savelogin">
<value>在本機上保存你的登錄</value>
</data>
<data name="2l_passerror">
<value>密碼錯誤</value>
</data>
<data name="1Today">
<value>今天</value>
</data>
<data name="2Today">
<value>今天</value>
</data>
<data name="1Week">
<value>本周</value>
</data>
<data name="2Week">
<value>本周</value>
</data>
<data name="1Month">
<value>本月</value>
</data>
<data name="2Month">
<value>本月</value>
</data>
<data name="1Search">
<value>查询</value>
</data>
<data name="2Search">
<value>查詢</value>
</data>
<data name="1Retrieve">
<value>刷新</value>
</data>
<data name="2Retrieve">
<value>刷新</value>
</data>
<data name="1NoComplete">
<value>未完成</value>
</data>
<data name="2NoComplete">
<value>未完成</value>
</data>
<data name="ToolGB8">
<value>全部</value>
</data>
<data name="1Update">
<value>更新</value>
</data>
<data name="2Update">
<value>更新</value>
</data>
<data name="1Calendar">
<value>本月日历表</value>
</data>
<data name="2Calendar">
<value>本月日歷表</value>
</data>
<data name="DDLGB1">
<value>年</value>
</data>
<data name="fDDLGB1">
<value>年</value>
</data>
<data name="DDLGB2">
<value>月</value>
</data>
<data name="fDDLGB2">
<value>月</value>
</data>
<data name="1In Charge">
<value>拥有者:</value>
</data>
<data name="2In Charge">
<value>擁有者:</value>
</data>
<data name="2Module No">
<value>模组编号:</value>
</data>
<data name="2Module No">
<value>模組編號:</value>
</data>
<data name="1Module Type">
<value>模组类型:</value>
</data>
<data name="2Module Type">
<value>模組類型:</value>
</data>
<data name="1Style">
<value>款号:</value>
</data>
<data name="2Style">
<value>款號:</value>
</data>
<data name="1Cust Style">
<value>客户款号:</value>
</data>
<data name="2Cust Style">
<value>客戶款號:</value>
</data>
<data name="1Customer Po">
<value>客户订单编号:</value>
</data>
<data name="2Customer Po">
<value>客户定單編號:</value>
</data>
<data name="1Company">
<value>公司:</value>
</data>
<data name="2Company">
<value>公司:</value>
</data>
<data name="1Program">
<value>规划:</value>
</data>
<data name="2Program">
<value>規劃:</value>
</data>
<data name="1Module Date">
<value>日期:</value>
</data>
<data name="2Module Date">
<value>日期:</value>
</data>
<data name="1To">
<value>至</value>
</data>
<data name="2To">
<value>至</value>
</data>
<data name="1Delivery Date">
<value>发货日期:</value>
</data>
<data name="2Delivery Date">
<value>發貨日期:</value>
</data>
<data name="1CheckPoint Type">
<value>类型:</value>
</data>
<data name="2CheckPoint Type">
<value>類型:</value>
</data>
<data name="1CheckPoint Description">
<value>描述:</value>
</data>
<data name="2CheckPoint Description">
<value>描述:</value>
</data>
<data name="1CheckPoint Expect Date">
<value>期望日期:</value>
</data>
<data name="2CheckPoint Expect Date">
<value>期望日期:</value>
</data>
<data name="1CheckPoint Actual Date">
<value>完成日期:</value>
</data>
<data name="2CheckPoint Actual Date">
<value>完成日期:</value>
</data>
HarryandMark 2002-11-12
  • 打赏
  • 举报
回复
using System;
using System.Web.UI;
using System.Reflection;
using System.Resources;
using System.Web.UI.WebControls;

namespace test1
{
/// <summary>
/// Summary description for Translate.
/// </summary>
public class Translate
{
private Microsoft.Web.UI.WebControls.Toolbar toolbar;
private System.Web.UI.WebControls.DataGrid datagrid;
private Microsoft.Web.UI.WebControls.ToolbarButton toolbarbutton;
private ResourceManager reString = new ResourceManager(mainback.s_translate, Assembly.GetAssembly(typeof(Translate)));
public Translate()
{
}

public void Login(Control form,int lang)
{
for (int i = 0; i < form.Controls.Count; i++)
{
string type = form.Controls[i].GetType().Name.Trim();
switch(type)
{
case "Panel":
if(form.Controls[i].Controls.Count > 0)
for(int j = 0; j < form.Controls[i].Controls.Count; j++)
Login(form.Controls[i],lang);
break;
case "CheckBox":
((CheckBox)form.FindControl(form.Controls[i].ID)).Text = reString.GetString(lang.ToString().Trim() + form.Controls[i].ID.Trim());
break;
case "Label":
((Label)form.FindControl(form.Controls[i].ID)).Text = reString.GetString(lang.ToString().Trim() + form.Controls[i].ID.Trim());
break;
case "Button":
((Button)form.FindControl(form.Controls[i].ID)).Text = reString.GetString(lang.ToString().Trim() + form.Controls[i].ID.Trim());
break;
}
}
}

public void day(Control form,int lang)
{
for (int i = 0; i < form.Controls.Count; i++)
{
string type = form.Controls[i].GetType().Name.Trim();
switch(type)
{
case "Panel":
if(form.Controls[i].Controls.Count > 0)
for(int j = 0; j < form.Controls[i].Controls.Count; j++)
Login(form.Controls[i],lang);
break;
case "Label":
((Label)form.FindControl(form.Controls[i].ID)).Text = reString.GetString(lang.ToString().Trim() + ((Label)form.FindControl(form.Controls[i].ID)).Text.Trim());
break;
case "Button":
((Button)form.FindControl(form.Controls[i].ID)).Text = reString.GetString(lang.ToString().Trim() + ((Button)form.FindControl(form.Controls[i].ID)).Text.Trim());
break;
case "DropDownList":
int num1 = ((DropDownList)form.FindControl(form.Controls[i].ID)).Items.Count;
for(int j=0; j<num1; j++)
{
((DropDownList)form.FindControl(form.Controls[i].ID)).Items[j].Text = reString.GetString(lang.ToString().Trim() + ((DropDownList)form.FindControl(form.Controls[i].ID)).Items[j].Text.Trim());
}
break;
case "Toolbar":
toolbar = (Microsoft.Web.UI.WebControls.Toolbar)form.Controls[i];
for(int y =0; y < toolbar.Items.Count; y++)
{
string type1 = toolbar.Items[y].GetType().ToString().Trim();
switch(type1)
{
case "Microsoft.Web.UI.WebControls.ToolbarButton":
toolbarbutton = ((Microsoft.Web.UI.WebControls.ToolbarButton)(toolbar.Items[y]));
toolbarbutton.Text = reString.GetString(lang.ToString().Trim() + toolbarbutton.Text.Trim());
break;
}
}
break;
case "DataGrid":
datagrid = (DataGrid)form.Controls[i];
for(int b = 0; b < ((DataGrid)form.Controls[i]).Columns.Count; b++)
{
((DataGrid)form.Controls[i]).Columns[b].HeaderText = reString.GetString(lang.ToString().Trim() + ((DataGrid)form.Controls[i]).Columns[b].HeaderText.Trim());
}
break;
}
}
}

public void DataGrid(Control c,int lang)
{
string s = c.GetType().Name;
if (s != "DataGridTable" && s != "DataGridItem" && s != "TableCell" && s != "LiteralControl")
{
if(c.GetType().Name.Trim() == "Button")
((Button)c).Text = reString.GetString(lang.ToString().Trim() + ((Button)c).Text.Trim());
}
if (c.Controls.Count > 0)
for (int i=0; i < c.Controls.Count; i++)
DataGrid(c.Controls[i]);
}
}
}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧