Вопрос проектирования - управляющий массив - PullRequest
2 голосов
/ 30 октября 2008

Хорошо, я знаю, как это сделать, но я хочу знать, если это ЛУЧШИЙ способ.

У меня есть таблица под названием «Темы», в которой есть список тем (obv). У меня есть страница с около 20 (+/- 10) флажками со всеми различными темами, на которые пользователь может подписаться. Я решил, что лучший способ сделать это - создать массив контрольных флажков и заполнить его при загрузке страницы.

Проблема в том, что флажки расположены в уникальном порядке. Должен ли я разместить их на странице, а затем динамически заполнить их при загрузке? Это лучший способ сделать это? Я не слишком знаком с массивами управления.

Спасибо!

1 Ответ

2 голосов
/ 30 октября 2008

Определите, что вы подразумеваете под "я должен разместить их на странице".

Вы имеете в виду Drag'n'Drop их на страницу aspx? Если вы это сделали, вам придется копировать каждый из них - один набор, созданный страницей, и второй, созданный вами, который заменяет первый набор.

Как меняется количество флажков («20 (+/- 10)»)? Это варианты, поступающие из базы данных? Они исправлены, но вы просто еще не знаете, сколько?

Один забавный аспект ControlCollection заключается в том, что элемент управления может находиться только в одном за раз. Если бы вы попробовали:

 ControlCollection cool = new ControlCollection ();
 coll.Add(Page.Controls[0]);

Он будет добавлен в coll, но он автоматически будет удален из Page.Controls.

РЕДАКТИРОВАНИЕ: (отвечая на комментарий) В своем коде создайте флажки вручную (прошло уже много времени с тех пор, как я написал код WebForm, поэтому я немного здесь в моде) и поместите его в массив (у массива не должно быть проблем, о которых я упоминал в отношении ControlCollection)

CheckBox[] boxes = new Checkbox[20];
for(int i =0; i< 20; ++i)
{
    boxes[i] = new CheckBox();
    // do stuff here
    Page.Controls.Add(boxes[i]);
}

Теперь для «делай вещи здесь» нам нужно, чтобы они были в нужном месте. Есть несколько способов. Мы можем построить вокруг них <table>; у нас может быть <asp:placeholder> элементов управления в aspx, которые мы тоже добавляем; мы можем установить атрибуты позиции стиля CSS.

...