Я использую список пользовательских элементов управления для динамического добавления пользовательских элементов управления при событии нажатия кнопки и могу удалить этот элемент управления кнопкой внутри пользовательского элемента управления. Когда я удаляю пользовательский элемент управления, пользовательские элементы управления удаляются, и запись этого элемента управления удаляется из списка.
Теперь моя проблема заключается в том, что когда страница находится в режиме обратной передачи, по индексу удаленного элемента управления добавляется новый пустой элемент управления, поскольку я вставил элементы управления в событие onload и последний элемент управления пользователя удаляется.
Большое спасибо заранее
List<User_controls> ctrl = new List<User_controls>();
protected void Page_Load(object sender, EventArgs e)
{
Session["userid"] = 3;
CreateControls();
}
protected void CreateControls()
{
if (!IsPostBack)
{
if (ViewState["totalcount"] == null)
{
ViewState["oldcount"] = ViewState["totalcount"] = 1;
}
}
for (int i = 0; i < (int)ViewState["totalcount"]; i++)
{
ctrl.Add((User_controls)LoadControl("~/User/controls.ascx"));
int index = ctrl.Count - 1;
pnl.Controls.Add(ctrl[index]);
ctrl[index].ID = "ctrl " + index;
ctrl[index].ehclick += new EventHandler(this.Btncancel_Click);
}
}
protected void btnadd_Click(object sender, EventArgs e)
{
int count = 0;
if (ViewState["newcount"] != null)
count = (int)ViewState["newcount"];
count++;
ViewState["newcount"] = count;
ViewState["totalcount"] = (int)ViewState["newcount"] + (int)ViewState["oldcount"];
ctrl.Add((User_controls)LoadControl("~/User/controls.ascx"));
pnl.Controls.Add(ctrl[ctrl.Count() - 1]);
ctrl[ctrl.Count() - 1].ID = "ctrl " + (ctrl.Count() - 1);
ctrl[ctrl.Count() - 1].ehclick += new EventHandler(this.Btncancel_Click);
}
protected void Btncancel_Click(object sender, EventArgs e)
{
User_controls rmctrl = (User_controls)sender;
int index = ctrl.IndexOf(rmctrl);
pnl.Controls.Remove(ctrl[index]);
ctrl.RemoveAt(index);
if (index < (int)ViewState["oldcount"])
{
ViewState["oldcount"] = (int)ViewState["oldcount"] - 1;
}
else
ViewState["newcount"] = (int)ViewState["newcount"] - 1;
if (ViewState["newcount"] != null)
{
ViewState["totalcount"] = (int)ViewState["newcount"] + (int)ViewState["oldcount"];
}
else
ViewState["totalcount"] = (int)ViewState["oldcount"];
}