2010-05-09 4 views
1

У меня есть форма на моей странице aspx, содержащая различные элементы управления, расположенные с использованием таблицы. Существует DDL «cboClients», который мне нужно включить или отключить в зависимости от роли в режиме редактирования.Как получить доступ к выпадающему списку из EditItemTemplate FormView

Проблема в том, что я не могу получить этот контроль с помощью метода FindControl().

Я попытался следующий код -

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

Даже я Аве использовал событие DataBound того же управления -

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

Спасибо Радж, что сработало для меня. Но можете ли вы сказать, в чем разница между кастингом и использованием оператора «как»? – IrfanRaza

+0

Оператор as как литой, за исключением того, что он дает нулевое значение для отказа преобразования, а не для создания исключения. http://msdn.microsoft.com/en-us/library/cscsdfbt(vs.71).aspx –

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