后台如何遍历动态生成的html控件

niitnanfeng 2009-02-19 10:05:35
前台的html控件是后台动态生成的,比如checkbox,服务器端控件很容易就实现了,但是我现在的问题是必须是html控件,下面的代码是从论坛里曾经有人回答的,那代码编译通不过,错误:无法将类型“System.Web.UI.ControlCollection”转换为“System.Web.UI.HtmlControls.HtmlForm”


foreach(Control ctl in (HtmlForm)Page.FindControl("Form1").Controls)
{
if(ctl is CheckBox) //如果是CheckBox
{
if((ctl as CheckBox).Checked) //如果CheckBox被选中
{
Response.Write((ctl as CheckBox).ID.ToString()+"被选中了!");
}
}
}

大伙有没有其他的办法?是在后台去遍历。
...全文
796 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
qin275513716 2012-02-14
  • 打赏
  • 举报
回复
就是啊,你怎么弄的,给个答案再结啊
uxspy 2009-06-19
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 niitnanfeng 的回复:]
谢谢各位的热心帮忙,我自己换一种方式解决了,是自己死钻牛角尖了。今天出去了没及时结贴,马上结贴
[/Quote]
请问你是怎么弄的,我也遇到同样问题,后台无法找到这些动态生成的项,如果看到请回复我uxspy@163.com,谢谢
JAMJIA 2009-05-14
  • 打赏
  • 举报
回复
学习了
niitnanfeng 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lijin84100 的回复:]
StringBuilder roleHTML = new StringBuilder();
roleHTML.Append(" <table style=\"FONT-SIZE: 12px\" width=\"100%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"1\"> \n");
for (int i = 0; i < list.Count; i = i + 4)
{
roleHTML.Append(" <tr> \n");
roleHTML.Append(" <td height=\"30\" > <input name=\"checkye\" type=\"checkbox\" id=\"checkye\" value=\"" + list[i].ID + "\" >" + l…
[/Quote]
我就是那样做的,我想知道你是怎么遍历到的,等有时间了加你。
niitnanfeng 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ojlovecd 的回复:]
引用 7 楼 niitnanfeng 的回复:
楼上说的我自己也试过,去掉了肯定编译通过了,但是我的checkbox不是服务器端的控件,他遍历不到他,现在的问题是怎样来遍历 <input id="Checkbox1" type="CheckBox" value="" />

if处就不能用CheckBox了,应该用:
C# codeif(ctlisSystem.Web.UI.HtmlControls.HtmlInputCheckBox)
[/Quote]
昨天我试过了。取不到
lijin84100 2009-02-20
  • 打赏
  • 举报
回复
StringBuilder roleHTML = new StringBuilder();
roleHTML.Append("<table style=\"FONT-SIZE: 12px\" width=\"100%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"1\"> \n");
for (int i = 0; i < list.Count; i = i + 4)
{
roleHTML.Append("<tr> \n");
roleHTML.Append("<td height=\"30\" ><input name=\"checkye\" type=\"checkbox\" id=\"checkye\" value=\"" + list[i].ID + "\" >" + list[i].JurisdictionName + "</td> \n");
if (list.Count >= i + 2)
{
roleHTML.Append("<td height=\"30\" ><input name=\"checkye\" type=\"checkbox\" id=\"checkye\" value=\"" + list[i + 1].ID + "\" >" + list[i + 1].JurisdictionName + "</td> \n");
}
if (list.Count >= i + 3)
{
roleHTML.Append("<td height=\"30\" ><input name=\"checkye\" type=\"checkbox\" id=\"checkye\" value=\"" + list[i + 2].ID + "\" >" + list[i + 2].JurisdictionName + "</td> \n");
}
if (list.Count >= i + 4)
{
roleHTML.Append("<td height=\"30\" ><input name=\"checkye\" type=\"checkbox\" id=\"checkye\" value=\"" + list[i + 3].ID + "\" >" + list[i + 3].JurisdictionName + "</td> \n");
}
roleHTML.Append("</tr> \n");
}
roleHTML.Append("</table> \n");
this.lbl_OutPutString.Text = roleHTML.ToString();
list.Clear();
}


给你介绍另一种方法看看.这样可以的.
路人乙e 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ojlovecd 的回复:]
if处就不能用CheckBox了,应该用:
if(ctlisSystem.Web.UI.HtmlControls.HtmlInputCheckBox)
[/Quote]
而且像楼主这种动作不应该拿到后台来执行的
我姓区不姓区 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 niitnanfeng 的回复:]
楼上说的我自己也试过,去掉了肯定编译通过了,但是我的checkbox不是服务器端的控件,他遍历不到他,现在的问题是怎样来遍历 <input id="Checkbox1" type="CheckBox" value=""  />
[/Quote]
if处就不能用CheckBox了,应该用:

if(ctl is System.Web.UI.HtmlControls.HtmlInputCheckBox)
xfreyes 2009-02-20
  • 打赏
  • 举报
回复
去掉后
<input id="Checkbox1" type="CheckBox" value="" />改了

<asp:CheckBox ID="CheckBox1" runat="server" />
ZJ159 2009-02-20
  • 打赏
  • 举报
回复
ding
niitnanfeng 2009-02-20
  • 打赏
  • 举报
回复
楼上说的我自己也试过,去掉了肯定编译通过了,但是我的checkbox不是服务器端的控件,他遍历不到他,现在的问题是怎样来遍历<input id="Checkbox1" type="CheckBox" value="" />
niitnanfeng 2009-02-20
  • 打赏
  • 举报
回复
谢谢各位的热心帮忙,我自己换一种方式解决了,是自己死钻牛角尖了。今天出去了没及时结贴,马上结贴
pbmlly 2009-02-20
  • 打赏
  • 举报
回复
学习.
浮生若梦丶 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lovehongyun 的回复:]
把HtmlForm去了试下
[/Quote]
up
lovehongyun 2009-02-20
  • 打赏
  • 举报
回复
把HtmlForm去了试下
wesleyluo 2009-02-20
  • 打赏
  • 举报
回复
学习下.
dingwb 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 ojlovecd 的回复:]
要是你是用这种方式动态生成的话,应该用js来获取控件,用后台代码估计是很难获取到的
[/Quote]

up
我姓区不姓区 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 niitnanfeng 的回复:]
引用 12 楼 lijin84100 的回复:
StringBuilder roleHTML = new StringBuilder();
roleHTML.Append(" <table style=\"FONT-SIZE: 12px\" width=\"100%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"1\"> \n");
for (int i = 0; i < list.Count; i = i + 4)
{
roleHTML.Append(" <tr> \n");
roleHTML.Append(" <td height=\"30\" > <input name=\"checkye\" type=\"checkbox\" id=\"checkye\" …
[/Quote]
要是你是用这种方式动态生成的话,应该用js来获取控件,用后台代码估计是很难获取到的
sunshine_anycall 2009-02-20
  • 打赏
  • 举报
回复
递归
还是用js循环,然后回传给后台
ls3697264 2009-02-20
  • 打赏
  • 举报
回复
UP
加载更多回复(4)

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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