怎么解决当页面禁用ViewState的时候,仍想保持某些服务器控件的状态
去搜索了一下,可以用控件ControlState
但是,那是在自定义控件中才可以用的
我现在想使TextBox, RadioButton等控件能保持它的ControlState应该怎么做呢
[解决办法]
忘记了``我这里有本书是写这个的viewstate控制。现在没时间很忙很忙等下帮你翻翻
[解决办法]
QQ群:323373
[解决办法]
jf,没用过其他的.
[解决办法]
TextBox控件的信息不是保存在视图状态里的,即使你禁用了页面的视图状态,它的内容仍然保留
[解决办法]
// IndexButton.cs
using System;
using System.ComponentModel;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Samples.AspNet.CS.Controls
{
[
AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal),
AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level=AspNetHostingPermissionLevel.Minimal),
ToolboxData( " <{0}:IndexButton runat=\ "server\ "> </{0}:IndexButton> ")
]
public class IndexButton : Button
{
private int indexValue;
[
Bindable(true),
Category( "Behavior "),
DefaultValue(0),
Description( "The index stored in control state. ")
]
public int Index
{
get
{
return indexValue;
}
set
{
indexValue = value;
}
}
[
Bindable(true),
Category( "Behavior "),
DefaultValue(0),
Description( "The index stored in view state. ")
]
public int IndexInViewState
{
get
{
object obj = ViewState[ "IndexInViewState "];
return (obj == null) ? 0 : (int)obj;
}
set
{
ViewState[ "IndexInViewState "] = value;
}
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
Page.RegisterRequiresControlState(this);
}
protected override object SaveControlState()
{
// Invoke the base class 's method and
// get the contribution to control state
// from the base class.
// If the indexValue field is not zero
// and the base class 's control state is not null,
// use Pair as a convenient data structure
// to efficiently save
// (and restore in LoadControlState)
// the two-part control state
// and restore it in LoadControlState.
object obj = base.SaveControlState();
if (indexValue != 0)
{
if (obj != null)
{
return new Pair(obj, indexValue);
}
else
{
return (indexValue);
}
}
else
{
return obj;
}
}
protected override void LoadControlState(object state)
{
if (state != null)
{
Pair p = state as Pair;
if (p != null)
{
base.LoadControlState(p.First);
indexValue = (int)p.Second;
}
else
{
if (state is int)
{
indexValue = (int)state;
}
else
{
base.LoadControlState(state);
}
}
}
}
}
}
[解决办法]
用两种方式实现了状态管理
ViewState和ControlState
[解决办法]
没找到内容太多``看了一下也不太明白
LZ自己找找吧``相信你可以搞定的:)
实在不行你用session呵呵
[解决办法]
自己招来的烦恼
[解决办法]
哦,那你自己写吧。
一个RadioButton中相信有不少于40个属性需要保持,并且你要准确地放入asp.net页面对控件树的处理生命期中。
对初学者,说根本你听不懂的技术又有什么意思呢?
[解决办法]
我怎么觉得sp1234的话有点别扭``
看信誉就知道RP不行
[解决办法]
你的问题可以跟自己开发那些控件的问题相媲美。
[解决办法]
我告诉你一个真正看csdn信誉的办法:
http://www.google.cn/advanced_search?q=sd4709494+site:community.csdn.net&hl=zh-CN&lr=&newwindow=1&rls=com.microsoft:en-US&as_qdr=all
你可以看看有信誉的人都是怎么回答问题的。
[解决办法]
sp1234(我喜欢不下雨的阴天) 说法比较直接了一点,但是自定义控件确实不是你想像的这么简单.
起码你要通晓
1.Page的生命周期
2.ViewState的实现
3.Page 加载,处理ViewState.
[解决办法]
自定义控件可绝对不简单,基本所有的书都是泛泛介绍
[解决办法]
继承控件,重写LoadControlState和SaveControlState方法
[解决办法]
,普通要传递值的控件的值不管ViewState是否禁用,都是要保持的.这属于ControlState,和ViewState是有区别的. textbox和radio的值无论何时都是保持的
[解决办法]
http://www.webjx.com/htmldata/2006-06-08/1149748147.html