asp:CheckBox后台获取不到前台的Checked属性
2012-05-27 10:47
387 查看
今天在测试程序的时候,碰到了这种现象:
后台代码:
前台:
但在执行时,不管怎么弄,就是执行不到 if (chb.Checked) { strDelete += "," + this.GvCourses.Rows[i].Cells[0].Text; } 这里面的东西,换句话说就是chb的checked始终为false;而另一出的却始终能执行。
于是我采用了方法一:清理了解决方案,重新编译,不行;
另一处checkbox的名字为“CheckBox1”, 我以为是名字的问题,
于是我采用了方法二:将此处的所有名字重新命名为CheckBox1, 清理解决方案,再次编译执行,还是不行;
这时采用了以前小时候经常用的终极方法:开始抱怨。
我在想是不是微软又产生了Bug。两处的代码我都已经复制成相同的样子了,还要怎样? 到底要怎样啊?
而当我静下心来想的时候,认为我产生错误的几率比微软产生Bug的几率要大,因为这个错误太明显太致命了。 于是我在检查分析;发现我每次执行后台的时候页面都有一闪,然后才执行后台,而且不管我选择多少个,后台都不会给strDelete赋值。
于是我得出: 服务器控件在执行后台代码时都会postback一次;
终于发现,问题在这:
做了上面修改时,问题解决。
每个出现的问题,都体现了自己一些知识的不足,对操作的原理还不是很了解。以后更应该虚心求教。
后台代码:
for (int i = 0; i < this.GvCourses.Rows.Count; i++) { CheckBox chb = this.GvCourses.Rows[i].FindControl("CheckB") as CheckBox; if (chb.Checked) { strDelete += "," + this.GvCourses.Rows[i].Cells[0].Text; } }
前台:
<asp:GridView ID="GvCourses" runat="server"> <Columns> <asp:BoundField HeaderText="ID" DataField="ID" HeaderStyle-CssClass="hide" FooterStyle-CssClass="hide" ItemStyle-CssClass="hide"> <FooterStyle CssClass="hide"></FooterStyle> <HeaderStyle CssClass="hide"></HeaderStyle> <ItemStyle CssClass="hide"></ItemStyle> </asp:BoundField> <asp:TemplateField> <HeaderTemplate> 选择 </HeaderTemplate> <ItemTemplate> <asp:CheckBox runat="server" ID="CheckB" /> </ItemTemplate> </asp:TemplateField> <asp:BoundField HeaderText="序号" HtmlEncode="false" /> <asp:BoundField HeaderText="课程名称" DataField="C_NAME" /> <asp:BoundField HeaderText="单元类型" DataField="T_ID" /> . . . </Columns> </GridView>
但在执行时,不管怎么弄,就是执行不到 if (chb.Checked) { strDelete += "," + this.GvCourses.Rows[i].Cells[0].Text; } 这里面的东西,换句话说就是chb的checked始终为false;而另一出的却始终能执行。
于是我采用了方法一:清理了解决方案,重新编译,不行;
另一处checkbox的名字为“CheckBox1”, 我以为是名字的问题,
于是我采用了方法二:将此处的所有名字重新命名为CheckBox1, 清理解决方案,再次编译执行,还是不行;
这时采用了以前小时候经常用的终极方法:开始抱怨。
我在想是不是微软又产生了Bug。两处的代码我都已经复制成相同的样子了,还要怎样? 到底要怎样啊?
而当我静下心来想的时候,认为我产生错误的几率比微软产生Bug的几率要大,因为这个错误太明显太致命了。 于是我在检查分析;发现我每次执行后台的时候页面都有一闪,然后才执行后台,而且不管我选择多少个,后台都不会给strDelete赋值。
于是我得出: 服务器控件在执行后台代码时都会postback一次;
终于发现,问题在这:
protected void Page_Load(object sender, EventArgs e) { this.lb_message.Text = ""; bindGrid(); InitDropDownList(); } 应该为: protected void Page_Load(object sender, EventArgs e) { this.lb_message.Text = ""; if (!IsPostBack) { bindGrid(); InitDropDownList(); } }
做了上面修改时,问题解决。
每个出现的问题,都体现了自己一些知识的不足,对操作的原理还不是很了解。以后更应该虚心求教。
相关文章推荐
- asp.net在后台给前台的控件设置Style属性与坐标,后台设置CSS样式,后台获取前台控件坐标
- js前台改变服务器控件的disable的属性,后台获取不到值
- js前台改变服务器控件的disable的属性,后台获取不到值
- ASP.Net 关于前台JS给input赋值后,runat="server" 后台利用ID.Value还是获取不到的问题
- asp.net checkboxlist 后台动态绑定,前台jquery获取value
- asp.net在后台给前台的控件设置Style属性与坐标,后台设置CSS样式,后台获取前台控件坐标
- asp.net给checkBox添加一个绑定属性,后台可以获取
- asp.net 在后台给前台的控件设置Style属性与坐标,后台设置CSS样式,后台获取前台控件坐标
- asp.net 在后台给前台的控件设置Style属性与坐标,后台设置CSS样式,后台获取前台控件坐标
- asp.net 在后台给前台的控件设置Style属性与坐标,后台设置CSS样式,后台获取前台控件坐标
- 后台获取不到前台Hidden值
- php、asp.net关于后台设置的cookie前台JS获取时出现中文乱码问题解决
- asp.net 后台禁用checkbox后,如何在前台脚本恢复的解决方法
- jquery-1.10.2 获取checkbox的checked属性总是undefined
- ASP.Net 如何让后台的cs页面获取到前台的html控件的值
- asp.net MVC后台获取前台json数据怎么处理
- 在前台给textbox设置readonly=true属性后,避免后台取不到值的3种解决方法。
- $("#formId"). serialize()后台获取不到表单中属性为disabled的元素的值的解决办法
- ASP.NET 后台动态生成CheckBOx控件并获取选中的值
- TextBox属性设置为只读后台获取不到值的问题