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