如题 有什么解决办法呢?

解决方案 »

  1.   

    用户控件中定义一个属性
    public   string   TEST

    get   {return   test;} 
    set   {test=   value;} 

    是从 System.Web.UI.Control 继承的this.ViewState
      

  2.   


    这才是我第二次发的帖 结帖为0有什么出奇呢?我不信你一进来csdn就有结贴率
      

  3.   


            public int Count
            {
                get
                {
                    if (ViewState["count"] != null)
                        return (int)ViewState["count"];
                    else
                        return 0;
                }
                set
                {
                    ViewState["count"] = value;
                }
            }
    是不是这样啊?
      

  4.   

    我创建一个pager类重写render输出html来显示分页的链接 并且添加了count和currentpageIndex和pagesize属性 都是用viewstate来保存的
    我在后台实例化pager然后赋值 
    调试发现在pager类赋值后回到后台viewstate数据就没了
      

  5.   

    具体后台代码:
    private void BindRepeater()
            {
                pager pager = new pager();
                pds = new PagedDataSource();
                pds.AllowPaging = true;
                pds.PageSize = 20;
                pager.PageSize = pds.PageSize;            using (DataTable dt = (man.getTip(Convert.ToInt32(ViewState["tipsId"]))).Tables[0])
                {
                    DataView dv = dt.DefaultView;
                    pds.DataSource = dv;
                    pager.Count = pds.Count;
                    
                    if (Request.QueryString["page"] != null)
                    {
                        int tPage = Convert.ToInt32(Request.QueryString["page"]);
                        if (pds.PageCount >= tPage)
                        {
                            pds.CurrentPageIndex = tPage - 1;
                            ViewState["currentPageIndex"] = pds.CurrentPageIndex;
                            pds.CurrentPageIndex = pds.CurrentPageIndex;
                        }
                    }
                    else
                    {
                        pds.CurrentPageIndex = 0;
                        ViewState["currentPageIndex"] = pds.CurrentPageIndex;
                        pds.CurrentPageIndex = pds.CurrentPageIndex;
                    }
                }            ViewState["pageCount"] = pds.PageCount;
                this.MessageList.DataSource = pds;
                this.MessageList.DataBind();
            }
    pager类代码:
    public class pager: System.Web.UI.Control
        {
            protected override void Render(System.Web.UI.HtmlTextWriter writer)
            {
                writer.WriteLine(Count);
            }        public int Count
            {
                get
                {
                    if (ViewState["count"] != null)
                        return (int)ViewState["count"];
                    else
                        return 0;
                }
                set
                {
                    ViewState["count"] = value;
                }
            }        public int CurrentPageIndex
            {
                get
                {
                    if (ViewState[ClientID + "CurrentPageIndex"] != null)
                        return (int)ViewState[ClientID + "CurrentPageIndex"];
                    else
                        return 0;
                }
                set
                {
                    ViewState[ClientID + "CurrentPageIndex"] = value;
                }
            }        public int PageSize
            {
                get
                {
                    if (ViewState[ClientID + "PageSize"] != null)
                        return (int)ViewState[ClientID + "PageSize"];
                    else
                        return 20;
                }
                set
                {
                    ViewState[ClientID + "PageSize"] = value;
                }
            }        public int PageCount
            {
                get
                {
                    return (int)Math.Ceiling((double)Count / PageSize);
                }
            }    }
    Count值最后为0 调试时显示为20
      

  6.   

    呵呵,代码挺多的,没有仔细看(但是超过10秒钟啦)。我有一个问题,为什么你不把    pager pager = new pager();出来的对象放到页面控件树中呢?如果不加入父控件(并且这个父控件最终也在页面控件树中),那么页面保存ViewState时不能处理到它。
      

  7.   

    通常,自定义控件是高级程序员开发的成果,然后初级程序员(以及美工和业余程序员)就可以使用你的自定义控件直接在设计窗口上写 html 方式的代码,例如   
           <kody:Pager ID="p1" runat="server" ..... />
    这种代码,在属性中声明与其它控件关系。使用自定义控件最好支持别人在设计器上声明方式来设计,而不是写 BindRepeater 这样的代码。这样的代码在你编程到中等水平时喜欢强调什么都用代码解决,但是越过那个阶段再进阶就会反而追求像初学者那样用鼠标拖一拖就使用好自定义控件了(但是此时你可以通过封装起来自定义控件让别人轻松共享你的成果)。