【发布时间】:2011-06-09 17:53:00
【问题描述】:
所以我的页面上有一个列表框和一些文本字段。通过文本字段,我可以将一个项目添加到我的列表框中(单击按钮,它将它添加到一个私有列表中,然后将其设置为 ViewState 并且列表再次被数据绑定)。我的列表框也在按钮的 Click 事件上触发的更新面板中。问题:我的 Viewstate 在回发时保持为空,因此每次都会重置。
一些代码:
private const string VIEW_INGREDIENTS = "IngredientsList";
private const string VIEW_LANGUAGE = "CurrentLanguage";
private List<IngredientData> _ingredientsList;
protected void Page_PreInit(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
if (ViewState[VIEW_INGREDIENTS] != null)
{
_ingredientsList = (List<IngredientData>) ViewState[VIEW_INGREDIENTS];
}
}
else
{
// prepare ingredient lists
_ingredientsList = new List<IngredientData>();
}
}
protected void Page_Load(object sender, EventArgs e)
{
lstIngredients.DataSource = _ingredientsList;
lstIngredients.DataTextField = "Text";
lstIngredients.DataValueField = "Name";
lstIngredients.DataBind();
}
protected void btnAddIngredient_Click(object sender, EventArgs e)
{
_ingredientsList.Add(new IngredientData { Name = txtIngredientName.Text, Quantity = txtUnitQuantity.Text, Unit = lstUnits.SelectedValue });
ViewState[VIEW_INGREDIENTS] = _ingredientsList;
lstIngredients.DataSource = _ingredientsList;
lstIngredients.DataBind();
}
【问题讨论】:
标签: asp.net listbox postback viewstate