Попытка проработать всю эту персонализацию веб-части и реализовать ее для списка.
Ну и конечный результат будет двумя списками со взаимозаменяемыми значениями (т. Е. Значение будет существовать только в одном из списков)
Но я не могу сохранить источник данных для этого. Так, может, я ошибаюсь?
Это то, что у меня есть для тестового тега H2 на странице
[Personalizable(PersonalizationScope.User)]
public string LabelText {
get { return h2Test.InnerText; }
set { h2Test.InnerText = value; }
}
И это работает нормально, если у меня есть текстовое поле и я использую его для изменения значения LabelText, то когда я закрываю браузер, оно автоматически сохраняет изменение.
Так что я подумал, хорошо, тогда, возможно, то же самое будет работать со списком
[Personalizable(PersonalizationScope.User)]
public DomainList Domains {
get { return (DomainList)lstBxDomains.DataSource; }
set {
lstBxDomains.DataSource = value;
lstBxDomains.DataBind();
}
}
Где DomainList - это просто класс, расширяющий List, а Domain - это просто класс из трех полей: int, string, string.
Но это не так, слишком ли это сложно для персонализации web-персонализации, или я просто неправильно ее реализовал (что более чем вероятно)
Это мой обработчик событий для удаления элементов из списка:
protected void btnRemDomain_Click(object sender, EventArgs e) {
if (IsPostBack && lstBxDomains.SelectedIndex > -1) {
for (int i = 0; i < lstBxDomains.Items.Count; i++) {
if (lstBxDomains.Items[i].Selected) {
Domains.Remove(Domains.Find(d => d.ID.ToString() == lstBxDomains.Items[i].Value));
}
}
Domains = Domains;
}
}
Домены = Домены; там есть строка, чтобы увидеть, если явная установка значения имеет значение (поскольку удаление не сбрасывает значение поля в точности), но это не так. Я также попытался создать новый локальный DomainList, установив его в глобальный, а затем выполнив удаление / поиск, а затем установив локальный глобальный. Но тоже не работает.