我看过其他几篇与此相关的帖子,但我对我的代码有疑问。亲切地忍受我。
我有用户控件,它有一个文本boa和一个下拉列表以及一些自定义验证器。 用户控件通过代码动态添加。
我正在使用以下代码来加载用户控件本身内的下拉列表
protected void Page_Load(object sender, EventArgs e)
{
ddl_RRC.DataSource = dicRC_Desc;
ddl_RRC.DataTextField = "value";
ddl_RRC.DataValueField = "key";
ddl_RRC.DataBind();
txtRC.Text = Request.Form[txtRC.UniqueID]; //To retain the value of text box
}
我在Page_Init
上动态添加用户控件 protected void Page_Init(object sender, EventArgs e)
{
if (GetPostBackControl(this) == "btnNewRow")
{
custControlCountID++;
}
for (int i = 0; i < custControlCountID; i++)
{
RejRow customControl = (RejRow)LoadControl("~/RejRow.ascx");
customControl.ID = "rejRow" + i;
divHolder.Controls.Add(customControl);
}
}
为文本框和下拉列表启用了Viewstate。 由于我在Page_Init中添加控件时使用相同的ID,为什么控件没有从viewstate获取值?
答案 0 :(得分:0)
我认为唯一的问题是你是否在DropDownList
的每个回发上对Page_Load
进行了数据绑定。只需检查IsPostback
- 属性,例如:
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
ddl_RRC.DataSource = dicRC_Desc;
ddl_RRC.DataTextField = "value";
ddl_RRC.DataValueField = "key";
ddl_RRC.DataBind();
}
txtRC.Text = Request.Form[txtRC.UniqueID]; //To retain the value of text box
}
但是,我不确定为什么你需要在表单字段中设置TextBox.Text
属性,因为它应该在Text
中存储它ViewState
。