热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

请哪位高手帮我看看我的代码,我该怎样获取动态添加的控件的状态?

我需要做一个项目,要动态在一个表格中添加一些复选按钮和文本(文本是从数据库查到的),客户端选择了复选框然后点击提交按钮后,服务器端怎么才能访问到那些动态添加的复选框的状态。我把一个类似的示例代码贴
我需要做一个项目,要动态在一个表格中添加一些复选按钮和文本(文本是从数据库查到的),客户端选择了复选框然后点击提交按钮后,服务器端怎么才能访问到那些动态添加的复选框的状态。
我把一个类似的示例代码贴在下面,请大家能帮我看看吧,先谢谢了。

aspx文件如下:
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>





    


    
    

        
            
                
                
                
                
              
            
           
        
        
        

    



后台cs文件如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            CheckBox chk1 = new CheckBox();
            chk1.ID = "ck1";
            this.TABLE1.Rows[0].Cells[0].Controls.Add(chk1);
            LiteralControl lc1 = new LiteralControl("篮球");
            this.TABLE1.Rows[0].Cells[0].Controls.Add(lc1);
            CheckBox chk2 = new CheckBox();
            chk2.ID = "ck2";
            this.TABLE1.Rows[0].Cells[1].Controls.Add(chk2);
            LiteralControl lc2 = new LiteralControl("排球");
            this.TABLE1.Rows[0].Cells[1].Controls.Add(lc2);

        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
       // CheckBox chk = (CheckBox)this.TABLE1.Rows[0].Cells[0].FindControl("ck1"); 这里chk为空,不能取得
        CheckBox chk = this.TABLE1.Rows[0].Cells[0].Controls[0] as CheckBox;//chk也为空!
       //if (chk.Checked)由于chk为空, 所以不能访问      
        { 
            //...
        }

      
    }
}



我在点击提交后表格中什么也没有了,我想可能是因为复选框和文本是动态添加的,而且写在if(!IsPostBack){}里面所以在提交后就没有了,但程序的ViewState可以保存回发数据呀,而且默认情况EnableViewState=true,就是说可以保存CheckBox和文本,我一直不明白为何控件提交了就没了。这种情况我该怎么写才能获取复选框?请指教。

17 个解决方案

#1


去掉if (!IsPostBack) 

点击按钮后,会进行postback,进page_load再进Button1_Click
你在page_load判断是postback就不添加控件了,因此取不到控件。

#2


引用 1 楼 findcaiyzh 的回复:
去掉if (!IsPostBack) 

点击按钮后,会进行postback,进page_load再进Button1_Click 
你在page_load判断是postback就不添加控件了,因此取不到控件。

up

#3


遍历,并主动保存至Session中

#4


去掉if (!IsPostBack) 好像不行,因为复选框控件再次加载会造成该控件的选择状态不被保存。

#5


引用 3 楼 cppfaq 的回复:
遍历,并主动保存至Session中

如何遍历?点击提交后复选框对象已无法访问!

#6


自己顶一下!

#7


帮顶

#8


你先理解下  Asp.net页面的生命周期  运行的流程

#9


建议你用JS动态添加吧,ASP.NET的框架是以事件驱动,对于这个设计来说特别麻烦,会有更高的效率,灵活些

#10



        
        
        
        
    


cs:
protected void Page_Load(object sender, EventArgs e)
    {
        TableRow rowchk = new TableRow();
        TableCell cell1 = new TableCell();
        TableCell cell2 = new TableCell();
        CheckBox chk1 = new CheckBox();
        chk1.ID = "ck1";
        cell1.Controls.Add(chk1);
        LiteralControl lc1 = new LiteralControl("篮球");
        cell1.Controls.Add(lc1);
        CheckBox chk2 = new CheckBox();
        chk2.ID = "ck2";
        cell2.Controls.Add(chk2);
        LiteralControl lc2 = new LiteralControl("排球");
        cell2.Controls.Add(lc2);
        rowchk.Controls.Add(cell1);
        rowchk.Controls.Add(cell2);
        this.Tb_Test.Controls.Add(rowchk);
}
也可
js:直接插入

#11


up

#12


篮球、排球?

你可以在IDE上拖入一个DataList控件,然后编辑模板并拖入CheckBox控件,并且设置好数据源。

如果不了解如何使用asp.net2.0开发数据驱动程序,可以参看 Scott Mitchell的教程中的这一篇。这一篇中他使用ObjectDataSource来读取数据库,你可以改为任意一种产生数据记录的方法(例如手动追加记录)。总之,你手写的代码太多了。手写代码很多,不能证明开发技术的高低,设计产品非常棒的人往往只写不足1/5的代码就完成了程序创意。

#13


可以把要保存到asp:HiddenField或者html的hidden(注意加上runat='server')

#14


用ajax做就可以了啊

#15


引用 10 楼 fghshy 的回复:
 
         
         
         
         
    
 

cs: 
protected void Page_Load(object sender, EventArgs e) 
    { 
        TableRow rowchk = new TableRow(); 
        TableCell cell1 = new TableCel…

这种办法也不行,在页面提交后复选框控件提交前的状态不能保留,所以也获取不到。

#16


引用 12 楼 sp1234 的回复:
篮球、排球? 

你可以在IDE上拖入一个DataList控件,然后编辑模板并拖入CheckBox控件,并且设置好数据源。 

如果不了解如何使用asp.net2.0开发数据驱动程序,可以参看Scott Mitchell的教程中的这一篇。这一篇中他使用ObjectDataSource来读取数据库,你可以改为任意一种产生数据记录的方法(例如手动追加记录)。总之,你手写的代码太多了。手写代码很多,不能证明开发技术的高低,设计产品非常棒的人往往只写不足1/5的代码…

DataList中拖入的静态CheckBox在选中提交后能够被获取状态吗?我先试试。

#17


帮帮忙啊,有谁可以给个类似的代码吗?

推荐阅读
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
author-avatar
心灵de倾斜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有