2009-10-05 2 views
1

Я использую C# .NETCommandEventArgs Доступ в PageLoad

У меня есть ретранслятор в View (MultiView) каждая строка содержит кнопку «Редактировать» (хранится на CommandArgument тип ID).

<asp:Button ID="buttonClick" OnCommand="ButtonClick" CommandArgument='<%#Eval("ID")%>' runat="server" Text="Edit"/> 

Когда пользователь нажимает кнопку «Изменить», они переходят к другому виду («Редактировать вид»).

В зависимости от того, какой тип Eval («ID») выбрал другой UserControl, должен быть виден.

Я заметил, что если обратная связь происходит в той же форме (Edit View), она теряет свое состояние для динамического управления. Поэтому я думаю, что мне нужно получить доступ/заполнить DIV (appViewArea) через страницу PageLoad.

В моей Page_Load я хочу, чтобы он заполнил DIV с помощью правильного UserControl, если пользователь обратился к Edit View. Вот что я имею в моей странице Page_Load.

if(_multiView1.ActiveViewIndex == 1) // This is the Edit View 
{ 
    int typeId = Convert.ToInt32(viewAppointmentID.Value); // viewAppointmentID is a hidden field which is created within the ButtonClick method. 

switch (typeId) 
{ 
    case 1: 
     { 
      var control = Page.LoadControl("~/editBirthAppointment.ascx"); 
      appViewArea.Controls.Add(control); 
     } 
     break; 
    case 2: 
     { 
      var control = Page.LoadControl("~/editDeathAppointment.ascx"); 
      appViewArea.Controls.Add(control); 
     } 
     break; 
} 
} 

protected void ButtonClick(object sender, CommandEventArgs e) 
{ 
    var viewAppointmentID = Convert.ToInt32(e.CommandArgument); 
    _multiView1.ActiveViewIndex = 1; 
} 

Моя проблема заключается в том, что она никогда не переходит в КРП statament (_mutliview), и это также не хранит viewAppointmentID. Я просмотрел веб-страницы, но не могу найти ничего, что действительно помогает мне. Я обращаюсь к нему неправильно?

Заранее благодарим за любую помощь.

Благодаря

Clare

ответ

0

Я добавил этот код вместо этого в событие кнопки. Кажется, теперь это работает, поэтому нужно хранить его в ViewState.

0

вам не нужно Page_Load но OnCommand событие из сетки и в этом случае вы проверить имя_команды и/или commandarguments

, кажется, что вы должны использовать

if(!Page.IsPostback()) 
     // fill grid here 

и в случае onRowCommand вы можете добавить UserControls на страницу

+0

Мне нужно использовать его в Page_Load, поскольку динамический элемент управления не хранится в ViewState. – ClareBear

+0

вы можете добавить его в сеанс var с помощью команды oncommand, а затем получить доступ к нему в page_load? или вы можете дать нам еще один код –

Смежные вопросы