C#:动态生成的CheckBoxList怎么获取值?

qq_41712950 2018-10-09 06:56:42

生成CheckBoxList的函数:

int i;
for (i = 0; i < 5; i++)
{
CheckBoxList cblist = new CheckBoxList();
for (int j = 1; j < 5; j++)
{
ListItem item = new ListItem();
item.Text =……
cblist.Items.Add(item);
}

网页上的HTML代码:(只列出了一个)

<span>……</span><table id="ctl24">
<tr>
<td><input id="ctl24_0" type="checkbox" name="ctl24$0" value="……" /><label for="ctl24_0">……</label></td>
</tr><tr>
<td><input id="ctl24_1" type="checkbox" name="ctl24$1" value="……" /><label for="ctl24_1">……</label></td>
</tr><tr>
<td><input id="ctl24_2" type="checkbox" name="ctl24$2" value="……" /><label for="ctl24_2">……</label></td>
</tr><tr>
<td><input id="ctl24_3" type="checkbox" name="ctl24$3" " value="……"/><label for="ctl24_3">…</label></td>
</tr>



问题:
动态生成的CheckBoxList的名字不是 ct124 吗?为什么this.FindControl("ctl24")的值是个空值?该怎么解决?
...全文
633 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
还想懒够 2018-11-06
  • 打赏
  • 举报
回复
用JS,在点击CheckBox的时候,往一个HiddenField里面写入相应的值,回传的时候只需要获取HiddenField的值就行了
Chrisfrog 2018-11-05
  • 打赏
  • 举报
回复
你搞错了id和clientID了 你获取的是clientID而不是checkboxList在服务器里面生命周期控件栈里存储的ID,解决方法是你生成checkboxList的时候加上id属性自己命名id再用findcontrol获取就行了,有疑问密我。
ying1234 2018-11-03
  • 打赏
  • 举报
回复
顶可动态生成html,也不用这样动态生成服务器控件,头疼,最终都要解析成html,喜欢用最直接的方式。
qq_41712950 2018-10-10
  • 打赏
  • 举报
回复
引用 6 楼 娃都会打酱油了的回复:
Page_Load事件里面动态生成的那段代码不管是否回发,都要执行才可以在后面的FindControl找到该控件
那肯定是先执行生成的……
  • 打赏
  • 举报
回复
Page_Load事件里面动态生成的那段代码不管是否回发,都要执行才可以在后面的FindControl找到该控件
全栈极简 2018-10-10
  • 打赏
  • 举报
回复
也可以直接在前台页面取控件的值,然后通过ajax与后台交互。https://www.cnblogs.com/guwei4037/p/4720214.html
  • 打赏
  • 举报
回复
了解页面加载顺序与asp.net刷新机制,取值实在什么位置,控件生成在前,取值在后。
如果取值在页面刷新时候,也是无法获取的。
qq_41712950 2018-10-09
  • 打赏
  • 举报
回复
引用 1 楼 wanghui0380的回复:
你需要在page_load里写那段for代码,因为asp.net的特殊机制,他只能查到生存期内的东西,如果你不在page_load每次添加上,回传后他已经“死了”

另外FindControl请注意控件层级

有关asp.net的生存期,请自己百度,因为现在玩asp.net比较少了,这些东西大概都是10多年的资料了,不过既然你现在在玩asp.net,还是建议你去看看“asp.net的生存期”,这是基本知识,如果不知道“asp.net的生存期”几乎无法在继续玩下去
不过你的思路应该是正确的,RadioButtonList就可以用ct124,ASP.NET我才刚刚开始学习,生存期是不太清楚
qq_41712950 2018-10-09
  • 打赏
  • 举报
回复
引用 1 楼 wanghui0380的回复:
你需要在page_load里写那段for代码,因为asp.net的特殊机制,他只能查到生存期内的东西,如果你不在page_load每次添加上,回传后他已经“死了”

另外FindControl请注意控件层级

有关asp.net的生存期,请自己百度,因为现在玩asp.net比较少了,这些东西大概都是10多年的资料了,不过既然你现在在玩asp.net,还是建议你去看看“asp.net的生存期”,这是基本知识,如果不知道“asp.net的生存期”几乎无法在继续玩下去
在pageload里写还是空值啊
wanghui0380 2018-10-09
  • 打赏
  • 举报
回复
你需要在page_load里写那段for代码,因为asp.net的特殊机制,他只能查到生存期内的东西,如果你不在page_load每次添加上,回传后他已经“死了”

另外FindControl请注意控件层级

有关asp.net的生存期,请自己百度,因为现在玩asp.net比较少了,这些东西大概都是10多年的资料了,不过既然你现在在玩asp.net,还是建议你去看看“asp.net的生存期”,这是基本知识,如果不知道“asp.net的生存期”几乎无法在继续玩下去

62,041

社区成员

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

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

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

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