Динамически добавлять разные пользовательские элементы управления - PullRequest
1 голос
/ 19 октября 2010

Я работаю над сайтом, который позволит преподавателям сообщать об успеваемости учащихся в их классах. У меня есть веб-сайт, настроенный на две основные страницы: одна с пользовательским элементом управления, который отображает классы (GridView базовой информации о классе с дочерним GridView в поле шаблона, которое отображает имена учеников и флажки для их выбора - MiniStudents) и другой с пользовательским элементом управления, который отображает выбранных учеников - называется FullStudents.

Хотя это и маловероятно, но инструктор может иметь одного и того же ученика в двух отдельных классах. Я уже учел это в текущей настройке страницы - комбинация идентификатора студента и идентификатора класса (идентификаторы классов меняются каждый квартал, для тех, кто думает, что это будет проблемой) образуют уникальный ключ в базе данных. Недавно один из моих пользователей спросил, могу ли я разбивать записи по классам на странице, чтобы инструкторы могли легко распознать, в каком классе они работают.

Итак, мой вопрос таков: могу ли я динамически добавить столбец в конец пользовательского элемента управления класса, который позволил бы мне отключить MiniStudents for FullStudents?

Если я пропустил какие-либо важные детали или если кому-то нужен / нужен код, пожалуйста, дайте мне знать.

Ответы [ 3 ]

1 голос
/ 19 октября 2010

Попробуйте это:

//Under page_load
string path;
if(condition) path = "~/MiniStudents.ascx";
else path = "~/FullStudents.ascx";
Control userControl = this.LoadControl(path);
panel1.Controls.Add(userControl);

И если у вас есть определенные свойства, которые вы хотите установить до визуализации usercontrol, то заставьте их наследовать пользовательский класс usercontrol:

public class CustomControl : UserControl

public class MiniStudents : CustomControl
public class FullStudents : CustomControl

Тактогда вы можете сделать это:

CustomControl userControl = (CustomControl)this.LoadControl(path);
userControl.UserId = userId;

Надеюсь, это поможет!

0 голосов
/ 19 октября 2010

Вы можете использовать многовариантный элемент управления, чтобы контролировать, какой элемент управления является видимым. Хотя я буду обеспокоен размером вашего viewstate, если вы загружаете все эти элементы управления одновременно. Похоже, что на странице может быть много данных и разметки.

0 голосов
/ 19 октября 2010

Вы можете добавить оба и скрыть одно или другое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...