Pageload 내에서 CommandEventArgs에 액세스하십시오
-
19-09-2019 - |
문제
C#.net을 사용하고 있습니다
보기 (Multiview) 내에 리피터가 있습니다. 각 행에는 'Edit'버튼이 포함되어 있습니다 (CommandArgument에 저장되는 것은 유형 ID).
<asp:Button ID="buttonClick" OnCommand="ButtonClick" CommandArgument='<%#Eval("ID")%>' runat="server" Text="Edit"/>
사용자가 '편집'버튼을 클릭하면 다른보기 (편집보기)로 이동합니다.
어떤 유형 평가 ( "ID")에 따라 다른 USERCONTROL이 표시되어야합니다.
Postback이 동일한 형태 (편집보기)로 발생하면 동적 제어의 상태가 상실된다는 것을 알았습니다. 따라서 Page_load를 통해 DIV (AppViewArea)에 액세스/채워야한다고 생각합니다.
내 page_load 내에서 사용자가 편집보기에 액세스 한 경우 DIV를 올바른 USERCONTROL로 채우기를 원합니다. 다음은 현재 내 페이지에있는 내용입니다.
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 이벤트가 필요하며 해당 경우 명령 이름 및/또는 CommandArguments를 확인합니다.
사용해야하는 것 같습니다
if(!Page.IsPostback())
// fill grid here
그리고 OnrowCommand 이벤트에서는 USERCONTROLS를 페이지에 추가 할 수 있습니다.