2010-05-09 2 views
1

테이블을 사용하여 배열 된 다양한 컨트롤이 포함 된 aspx 페이지에 formview가 있습니다. 편집 모드에서 역할에 따라 활성화 또는 비활성화해야하는 DDL "cboClients"가 있습니다.FormView의 EditItemTemplate에서 드롭 다운 목록에 액세스하는 방법

여기에서 문제는 FindControl() 메서드를 사용하여 해당 컨트롤을 가져올 수 없다는 것입니다.

나는 다음 코드를 시도 -

 DropDownList ddl = null; 
     if (FormView1.Row != null) 
     { 
      ddl = (DropDownList)FormView1.Row.FindControl("cboClients"); 
      ddl.Enabled=false;   
} 

나는 같은 컨트롤의 데이터 바인딩 이벤트 사용 AVE에도 -

protected void cboClients_DataBound(object sender, EventArgs e) 
    { 
     if (FormView1.CurrentMode == FormViewMode.Edit) 
     { 
      if ((Session["RoleName"].ToString().Equals("Clients")) || (Session["RoleName"].ToString().Equals("Suppliers"))) 
      { 
       DropDownList ddl = (DropDownList)sender; 
       ddl.Enabled = false; 
      } 
     } 
    } 

을하지만 formview 모드 일 때이 데이터 바인딩 이벤트는 한 번만 발생하지만 변경되었습니다.

누구나 적절한 해결책을 제공 할 수 있습니까?

시간을 공유해 주셔서 감사합니다.

답변

2

ModeChanged 이벤트를 사용해보십시오. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.formview.modechanged.aspx

갱신 ..

DropDownList ddl = FormView1.FindControl("cboClients") as DropDownList; 
if (ddl != null) { 
    ddl.Enabled=false;   
} 
+0

감사 주권을 시도,하지만 난 또한을 사용했다. – IrfanRaza

+0

감사합니다 Raj, 저를 위해 일한. 하지만 캐스팅과 "as"연산자를 사용하는 것의 차이점은 무엇인지 알 수 있습니까? – IrfanRaza

+0

as 연산자는 예외를 발생시키는 대신 변환 실패시 null을 산출한다는 점을 제외하면 캐스트와 같습니다. http://msdn.microsoft.com/en-us/library/cscsdfbt(vs.71).aspx –

관련 문제