ASP.NET Wizard контролирует недостаток - PullRequest
3 голосов
/ 25 января 2011

Я нахожусь в процессе оценки ASP.NET Wizard Control. Там, где нам нужно собирать данные с разных этапов, проверять данные и к концу я смогу показать сводку данных.

Я хотел бы узнать от группы, использовал ли кто-нибудь этот элемент управления и с какими проблемами он столкнулся. Есть ли ограничения использования с этим элементом управления?

Ответы [ 2 ]

3 голосов
/ 01 августа 2013

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

Я создал мастер, в котором шаги, отображаемые на боковой панели, зависят от того, на каком шаге вы находитесь (и от того, что вы сделали до этого момента). Из этого следует, что шаг, к которому вы переходите, когда нажимаете Next или Previous, также определяется динамически.

Чтобы реализовать это, я прочитал много материала о динамическом отключении шагов, скрытии шагов, а также добавлении и удалении шагов. Последний привел меня в глубокую воду с ViewState. Для чего это стоит, вот мой основной подход:

Вы можете контролировать, какие шаги видны на боковой панели, установив для идентификатора шага (и заголовок, если он установлен) пустую строку, например. У меня есть имена шагов в arrWizardSteps () и мои шаги определены как целочисленные константы, затем используйте

  For i = intCREDENTIALS To intADDITIONAL_INFORMATION
    Wizard1.WizardSteps(i).ID = IIf(Wizard1.ActiveStepIndex < i, "", arrWizardSteps(i))
  Next

Если шаги относительно независимы, вы можете обрабатывать события SideBarButtonClick, PreviousButtonClick и NextButtonClick, вызывая ту же подпрограмму, которую вы создаете для обработки, покидая текущий шаг, и вводя следующий, независимо от того, какую кнопку вы нажали, чтобы сделать переход. Например, подпрограмма может хранить данные, собранные элементами управления текущего шага, и загружать некоторые данные в элементы управления следующего шага.

Если вы обрабатываете эти события, вам, вероятно, нужно самостоятельно изменить ActiveStepIndex. Мастер будет увеличивать / уменьшать ActiveStepIndex (в зависимости от того, какая кнопка была нажата), если вы не измените ее (если вы не установили e.Cancel = true в своем обработчике, где e - аргумент WizardNavigationEventArgs для обработчика).

Если ваш код для скрытия шагов должен знать конечный шаг, вам нужно поместить этот код в PreRender, так как в этот момент мастер перейдет к следующему шагу, и вы узнаете, что это такое.

1 голос
/ 25 января 2011

Лично мне не нравится волшебное управление.Он довольно жесткий, и мне было не очень приятно с ним работать.С тех пор я использовал элемент управления MultiView внутри и UpdatePanel с пользовательскими элементами управления в каждом представлении для каждого шага для моих мастеров.Таким образом, он может быть полностью гибким.

С подходом MultiView вы также можете легко увидеть все шаги мастера в конструкторе.

Это только моя опция для элемента управления, хотя я недать ему много шансов при первом посещении.

...