在WebUserControl中使用Viewstate for ListItemCollection

时间:2015-05-21 11:52:55

标签: c# asp.net

我正在开发一个使用ListItemCollection成员的UserControl。 我可以向此ListItemCollection添加Items,但它在回发后被清除。 如何使用viewstate。

    public partial class IgList : System.Web.UI.UserControl
    {
        public ListItemCollection Items = new ListItemCollection();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                Items = new ListItemCollection();
            }
        }

        public void fillList()
        {
            int i = 1; 

            foreach (ListItem li in Items)
            {
                LinkButton lb = new LinkButton();
                lb.ID = "IgListItem" + i; 
                lb.Style.Add("clear", "both");
                lb.Style.Add("display", "block");
                lb.Style.Add("width", "100%");
                lb.Style.Add("height", "23px");
                lb.Font.Underline = false; 
                lb.ForeColor=  System.Drawing.Color.Black; 
                lb.Height= Unit.Pixel(23); 
                lb.BorderColor= System.Drawing.Color.Gainsboro;  
                lb.BorderStyle= BorderStyle.Solid;
                lb.BorderWidth = Unit.Pixel(1);
                lb.Text = li.Text;
                lb.CommandArgument = li.Value;
                lb.CommandName = "ItemSelected"; 
                i++;
                Panel1.Controls.Add(lb);

            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

Items = new ListItemCollection();中取出!Page.IsPostBack,只有Items中的数据会在第一页上加载。如果你真的想要使用一个视图状态,你可以在初始页面加载时设置它,你现在在哪里,并设置该块的控制输出一侧,两种方式都将完成同样的事情。我更喜欢第一种方法,以防自上次设置ViewState以来数据发生了变化。