自动生成的checkbox控件,在post后怎样保存原来的值? 每次都需要重新创建,然后需要保存状态,下一次创建的时候根据上依次的状态来设置是否选择。状态保存可以考虑放在ViewState中 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private void Page_Load(object sender, System.EventArgs e){ CreateButton();}private void CreateButton(){ for( int i=0;i<10;i++ ) { CheckBox cb = new CheckBox(); cb.ID = this.UniqueID+"_chk_"+i; cb.Text = "第"+i+"个"; object o = ViewState[cb.ID]; if( o!=null ) cb.Checked = (bool)o; else ViewState.Add( cb.ID,cb.Checked ); buttonContainer.Controls.Add( cb ); }}测试通过了,代码其他部分略 有没有什么办法能自动检测状态, 我在下面的地方看到( http://expert.csdn.net/Expert/topic/1499/1499414.xml?temp=.6547663 )用 protected override void CreateChildControls()重载CreateChildControls,贴子上说“创建的控件在回发后系统会从Post回的数据中设置各个ChildControls的值(保留控件的视图状态)。”,我照样做了能生成但是回发后就不行了,不知怎样做? 那是在写控件的时候可以使用,原理是这样:控件重载CreateChildControls后,使用this.Controls.Add的方法把控件加到Controls中,页面框架会负责调用你Add进去的控件的SaveViewState方法把状态保存到ViewState中。Post回来后,页面框架会根据控件树调用LoadViewState方法来读取状态。在页面上其实用我的方法还简单一点 http://expert.csdn.net/Expert/topic/1353/1353457.xml?temp=3.324527E-02看看我的例子 icyer() :在OnInit方法中添加什么能详细说下吗? 其实不用那么麻烦,假如你是在Page_Load中创建的CheckBox,你把它放在if(!IsPostBack){}外面就行了,如果放在里面就会出现你说的post后控件消失的现象。这样每次页面加载的时候都会重新创建CheckBox,你原来的值它会从ViewState中给你恢复的。 在OnInit方法中添加下面的代码:CheckBox chk = new CheckBox();this.Controls[1].Controls.Add(chk); 不用这么复杂,调用Request.Form("YourCheckBoxName")即可得到返回值! asp.net 取得的路径怎么没有分隔符? 怎样获得gridview的PagerTemplate里面的TextBox控件的Text 重写Repeater控件问题 如何根据一个变量来执行相应的方法 关于调用其它页函数的问题? 如何让treeview添加节点不重复? 如何让Session变量保存的时间长一些? Binding Un-type dataset to Un-type rpt file 如果是int那怎么让它空着插入数据库 页面刷新时候怎么不回到页首? 【救命-在线等待】如何在WebService中访问客户端的Cookie 如何在服务器端的Talbe控件中,加入用户自定义控件?
{
CreateButton();
}private void CreateButton()
{
for( int i=0;i<10;i++ )
{
CheckBox cb = new CheckBox();
cb.ID = this.UniqueID+"_chk_"+i;
cb.Text = "第"+i+"个";
object o = ViewState[cb.ID]; if( o!=null )
cb.Checked = (bool)o;
else
ViewState.Add( cb.ID,cb.Checked );
buttonContainer.Controls.Add( cb );
}
}测试通过了,代码其他部分略
我在下面的地方看到( http://expert.csdn.net/Expert/topic/1499/1499414.xml?temp=.6547663 )用 protected override void CreateChildControls()重载CreateChildControls,贴子上说“创建的控件在回发后系统会从Post回的数据中设置各个ChildControls的值(保留控件的视图状态)。”,我照样做了能生成但是回发后就不行了,不知怎样做?
Post回来后,页面框架会根据控件树调用LoadViewState方法来读取状态。在页面上其实用我的方法还简单一点
看看我的例子
CheckBox chk = new CheckBox();
this.Controls[1].Controls.Add(chk);