这是我的第一个问题,如果我做错了什么,我深表歉意。我也是 Asp.net 的新手。这是我的问题:
我有一个“添加控制按钮”,它添加了一个用户控件,只不过是一个预配置的列表框。(这个想法是根据用户的需要添加用户控件。)到目前为止一切都很好。当我在 ListBox 中标记一个元素时,选择在第一次回发后丢失(例如在单击添加控制按钮后)。似乎是生命周期问题,不知道。我的错误解决方案(根据我在网上找到的内容进行了调整)如下:我使用一个列表来恢复基于其 ID 的每个用户控件。谢谢你。这是代码:
protected List<string> ControlsList
{
get
{
if (ViewState["controls"] == null)
{
ViewState["controls"] = new List<string>();
}
return (List<string>)ViewState["controls"];
}
}
//Restore Controls based on IDs in ControlsList
protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
foreach (string contrID in ControlsList)
{
Control c;
c = LoadControl("v1.ascx");
c.ID = "v1-" + contrID;
PlaceHolder1.Controls.Add(c);
}
//Button Click adds Control
protected void addControl(object sender, EventArgs e)
{
Control c;
c = LoadControl("v1.ascx");
c.ID = "v1-" + NextID.ToString();
ControlsList.Add(c.ID);
PlaceHolder1.Controls.Add(c);
}
这里是用户控制:
public partial class v1 : System.Web.UI.UserControl
{
protected void Page_Init(object sender, EventArgs e)
{
v1_ListBox1.DataSourceID = "A1Vm1_SqlDataSource";
v1_ListBox1.DataTextField = "Vm1";
v1_ListBox1.DataValueField = "Vm1";
v1_ListBox1.SelectionMode = ListSelectionMode.Multiple;
}