在把PagedDataSource类型的数据装ViewState时出错了,
类型“System.Web.UI.WebControls.PagedDataSource”必须标记为 Serializable 或者具有 ReferenceConverter 以外的 TypeConverter,才能被放置在视图状态中。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: 类型“System.Web.UI.WebControls.PagedDataSource”必须标记为 Serializable 或者具有 ReferenceConverter 以外的 TypeConverter,才能被放置在视图状态中。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: 
[HttpException (0x80004005): 类型“System.Web.UI.WebControls.PagedDataSource”必须标记为 Serializable 或者具有 ReferenceConverter 以外的 TypeConverter,才能被放置在视图状态中。]
   System.Web.UI.LosFormatter.SerializeValue(TextWriter output, Object value) +1480
   System.Web.UI.LosFormatter.SerializeValue(TextWriter output, Object value) +430
   System.Web.UI.LosFormatter.SerializeValue(TextWriter output, Object value) +764
   System.Web.UI.LosFormatter.SerializeValue(TextWriter output, Object value) +847
   System.Web.UI.LosFormatter.SerializeValue(TextWriter output, Object value) +872
   System.Web.UI.LosFormatter.SerializeInternal(TextWriter output, Object value) +102
   System.Web.UI.Page.OnFormRender(HtmlTextWriter writer, String formUniqueID) +143
   System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) +35
   System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) +262
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +72
   System.Web.UI.Control.Render(HtmlTextWriter writer) +7
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
   System.Web.UI.Page.ProcessRequestMain() +1929

解决方案 »

  1.   

    我想知道怎么样转换才不出错,比如:ViewState["data"]=dataone(PagedDataSource类型的)
      

  2.   

    只溜了前两行。这个对象.net并没有写序列化/反序列化代码,也许微软不愿意写,也许微软技术不够不会写。如果你自己写,可以继承它,并且子类具有 ISerializable 接口即可。你可以从msn或者google上好好看看 ISerializable 的说明。可能你并不需要放那个沉重的包装对象,把它里边真是的业务对象集合放在ViewState里就行了。通常,要将自定义的业务对象放入ViewState,因此自定义业务对象的根类要具有这个接口。如果你这样写过(所有业务对象都具有这个接口),写asp.net的MIS程序会比较轻松。
      

  3.   

    PagedDataSource中我放的是一个DataTable.DefaultView,我的目地只是想存取数据时方便一些,哪知道倒更麻烦了,本要想叫针儿,给它弄出来,现在一看,自找苦吃。
      

  4.   

    //数据源
            public PagedDataSource _dataSource
            {
                get { return ViewState["_dataSource"] as PagedDataSource; }
                set { ViewState["_dataSource"] = value; }
            } //数据源
            public PagedDataSource _dataSource
            {
                get { return (PagedDataSource) ViewState["_dataSource"]; }
                set { ViewState["_dataSource"] = value; }
            }
    PagingMode
    “System.Web.UI.WebControls.PagedDataSource”未标记为可序列化。
    y67ljh
    foshan546
    WR7FR我这样写但是“System.Web.UI.WebControls.PagedDataSource”未标记为可序列化。