如何遍历Table控件中动态创建的ROW 和CELL,并判断每个CELL中的控件类型!!!!

jasonM2008 2009-04-25 03:39:50
我是这样做的,但是怎么只得到了一个控件,但是我页面上不只一个!动态创建了很多个控件!
foreach(TableRow TR in tbContent.Rows)
foreach (TableCell TD in TR.Cells)
foreach (Control ctl in TD.Controls)
{
Response.Write(ctl.GetType().ToString());
}
得到这个:System.Web.UI.WebControls.Button

动态创建控件的代码如下:

if (!IsPostBack)
{
MyInit();
int nExam_Id = int.Parse(Request.QueryString["ExamId"].ToString());
string strSQL = "select * from Online_Exam where Exam_Id = '" + nExam_Id.ToString() + "'";
DataSet ds = DataOpera.QueryData(strSQL);
if (ds.Tables[0].Rows.Count > 0)
{
lb_Tittle.InnerText = ds.Tables[0].Rows[0]["Tittle"].ToString();
spAuthor.InnerText = ds.Tables[0].Rows[0]["Exam_Author"].ToString();
spDate.InnerText = ds.Tables[0].Rows[0]["Exam_Date"].ToString();
spTime.InnerText = ds.Tables[0].Rows[0]["Time"].ToString();
spId.InnerText = ds.Tables[0].Rows[0]["Exam_Id"].ToString();
ds.Clear();
}
strSQL = "select * from Exam_Subject where Exam_Id =" + nExam_Id.ToString() + " order by Subject_Num asc , Sub_Num asc";
ds = DataOpera.QueryData(strSQL);
int nCount = ds.Tables[0].Rows.Count;
nRecordCount = nCount;
if (nCount > 0)
{
int nID = 0;
for (int nIndex = 0; nIndex < nCount; nIndex++)
{
nID = int.Parse(ds.Tables[0].Rows[nIndex]["ID"].ToString());
switch (int.Parse(ds.Tables[0].Rows[nIndex]["Subject_Type"].ToString()))
{
case 1:
AddSingleOption(ds, nID);
break;
case 2:
AddMultiOption(ds, nID);
break;
case 3:
AddInput(ds, nID);
break;
case 4:
Addjuge(ds, nID);
break;
case 5:
AddAnswer(ds, nID);
break;
case 6:
AddDesign(ds, nID);
break;
default:
break;
}

}

}

}
AddSubmitButton();
}

public void AddInput(DataSet ds, int nIndex) //增加填空题
{
if (bFirstInput)
{
TableRow tbRow = new TableRow();
TableCell tbCell = new TableCell();
Label lbTittleHead = new Label();
lbTittleHead.ID = "lbTittleHead" + nIndex.ToString();
lbTittleHead.Text = "填空题";
tbCell.Controls.Add(lbTittleHead);
tbCell.CssClass = "InputHead";
tbCell.ColumnSpan = 2;
tbRow.Cells.Add(tbCell);
tbContent.Rows.Add(tbRow); //添加一行到表格中
bFirstInput = false;
}
string strTittle;
strTittle = "<xmp>" + ds.Tables[0].Rows[nIndex]["Subject_Tittle"].ToString() + "</xmp>"; //填空描述

//放置一行放置标题
TableRow tbRowTittle = new TableRow();
TableCell tbCellTittle = new TableCell(); //放置标题
Label lbTittle = new Label();
nInputCount++;
lbTittle.Text = "(" + nInputCount.ToString() + ")," + strTittle;
lbTittle.ID = "lbTittle" + nIndex.ToString(); //记录的ID是LABEL的ID
tbCellTittle.CssClass = "InputTittle";
tbCellTittle.ColumnSpan = 2;
tbCellTittle.Controls.Add(lbTittle);
tbRowTittle.Cells.Add(tbCellTittle); //添加一个单元格
tbContent.Rows.Add(tbRowTittle); //添加到表格中


//添加一行用于放置textbox 让用户输入
TableRow tbRowInput = new TableRow();
TableCell tbCellInput = new TableCell();
TextBox txtInput = new TextBox();
txtInput.CssClass = "Exam_txtBox";
txtInput.ID = "txtInput" + nIndex.ToString();
txtInput.TextMode = TextBoxMode.MultiLine;
tbCellInput.CssClass = "Input";
tbCellInput.ColumnSpan = 2;
tbCellInput.Controls.Add(txtInput);
tbRowInput.Cells.Add(tbCellInput);
tbContent.Rows.Add(tbRowInput); //添加到表格中

}
。。。。。。。。


各位帮我看看!!!!改怎么来做到这点!!!!
谢谢,我新手!说详细点!
...全文
306 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
coodd 2009-04-26
  • 打赏
  • 举报
回复
递归遍历
zsuswy 2009-04-26
  • 打赏
  • 举报
回复
汗,这么长的代码,纯体力活~~^^!
快40的码农 2009-04-25
  • 打赏
  • 举报
回复
得用到递归遍历.
快40的码农 2009-04-25
  • 打赏
  • 举报
回复
public static void SetControlEnabled(Control parent,bool strBool)
{
if (parent == null)
{
return;
}

foreach(Control webControl in parent.Controls)
{
string controlType=webControl.GetType().FullName;
switch (controlType)
{
case "System.Web.UI.WebControls.TextBox":
((System.Web.UI.WebControls.TextBox)webControl).Enabled=strBool;
break;
case "System.Web.UI.WebControls.Button":
((System.Web.UI.WebControls.Button)webControl).Enabled=strBool;
break;
case "System.Web.UI.WebControls.ListBox":
((System.Web.UI.WebControls.ListBox)webControl).Enabled=strBool;
break;
case "System.Web.UI.WebControls.Label":
((System.Web.UI.WebControls.Label)webControl).Enabled=strBool;
break;
case "System.Web.UI.WebControls.DropDownList":
((System.Web.UI.WebControls.DropDownList)webControl).Enabled=strBool;
break;
case "System.Web.UI.WebControls.CheckBox":
((System.Web.UI.WebControls.CheckBox)webControl).Enabled=strBool;
break;
case "System.Web.UI.WebControls.LinkButton":
((System.Web.UI.WebControls.LinkButton)webControl).Enabled=strBool;
break;
}

if (webControl.Controls.Count > 0)
{
SetControlEnabled(webControl,strBool);
}
}
}

62,268

社区成员

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

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

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

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