Доступ к CommandEventArgs в PageLoad
-
19-09-2019 - |
Вопрос
Я использую С#.net
У меня есть повторитель в представлении (MultiView), каждая строка содержит кнопку «Изменить» (в аргументе CommandArgument хранится идентификатор типа).
<asp:Button ID="buttonClick" OnCommand="ButtonClick" CommandArgument='<%#Eval("ID")%>' runat="server" Text="Edit"/>
Когда пользователь нажимает кнопку «Редактировать», он переходит к другому представлению («Редактировать представление»).
В зависимости от того, какой тип Eval("ID") выбран, должен быть виден другой UserControl.
Я заметил, что если обратная передача происходит в той же форме (представление редактирования), она теряет свое состояние для динамического управления.Поэтому я думаю, что мне нужно получить доступ/заполнить DIV (appViewArea) через Page_Load.
В моем Page_Load я хочу, чтобы он заполнял DIV правильным UserControl только в том случае, если пользователь получил доступ к представлению редактирования.Вот что у меня сейчас есть в моем 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;
}
Моя проблема в том, что он никогда не попадает в оператор if (_mutliview), а также не сохраняет viewAppointmentID.Я просмотрел Интернет, но не нашел ничего, что действительно мне помогло бы.Я получаю к нему неправильный доступ?
Заранее благодарю за любую помощь.
Спасибо
Клэр
Решение 2
Вместо этого я добавил этот код в событие кнопки.Кажется, теперь это работает, поэтому его необходимо сохранить в ViewState.
Другие советы
вам не нужен page_load, а событие oncommand из сетки, и в этом случае вы проверяете имя команды и/или аргументы команды.
кажется, вам следует использовать
if(!Page.IsPostback())
// fill grid here
и в событии onRowCommand вы можете добавить пользовательские элементы управления на страницу