自定义WebControls.DropDownList视图状态
本文关键字:视图状态 DropDownList WebControls 自定义 | 更新日期: 2023-09-27 18:08:40
我正在尝试创建一个自定义web控件,这只是一个简单的下拉列表,它预装了美国的所有州。它在大多数情况下是工作的,但是在发布后,控件恢复到其初始状态。(我能够在帖子中获得所选值)。我需要实现什么,以使列表保留它的选择项目后发回?
这是我的控制类:[DefaultProperty("Text")]
[ToolboxData("<{0}:StateDropDownList runat=server></{0}:StateDropDownList>")]
public class StateDropDownList : DropDownList
{
private void Populatedropdown()
{
this.Items.Clear();
this.Items.Add(new ListItem("Alabama", "AL"));
/* the rest .... */
this.Items.Add(new ListItem("Wyoming", "WY"));
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
Populatedropdown();
}
}
编辑
当控件从数据源反弹时,这不是问题。这个自定义控件的目标是避免需要不断地从状态表中绑定下拉列表。我要解决的问题是如何在回发时维护此自定义下拉菜单的选定值?
private void Populatedropdown()
{
if(this.Items.Count == 0)
{
this.Items.Clear();
this.Items.Add(new ListItem("Alabama", "AL"));
/* the rest .... */
this.Items.Add(new ListItem("Wyoming", "WY"));
}
}
您将ListItems
添加到控制生命周期的后期。
移动你的Populatedropdown
调用到OnInit方法,你的问题应该会消失。
你在做这个吗?
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//only bind the control when the page is first loaded
myControl.DataBind();
}
}