Как скрыть и отобразить шаблоны элементов в форме просмотра в зависимости от некоторых условий?

Здесь я получаю некоторые значения с предыдущей страницы, используя сессию для проверки условия:

  string PTN = Session["PrimaryTool"].ToString();
  string PTE = Session["PrimaryToolExp"].ToString();
  if (PTN != null && PTE != null)
  {
     if (fvJobApplying.CurrentMode == FormViewMode.ReadOnly)
     {
         Label PT = (Label)fvJobApplying.FindControl("lblPrimaryTool");
         PT.Visible = true;

         Label PTExperience = (Label)fvJobApplying.FindControl("lblPrimaryToolExp");
         PTExperience.Visible = true;
         Label Experience = (Label)fvJobApplying.FindControl("lblExperience");
         Experience.Visible = false;
     }
}

Мои значения сеанса и мое состояние работают нормально... Здесь, в зависимости от условия, как показать и скрыть столбцы или шаблоны элементов в formview в asp.net

1 ответ

Не ясно, какая проблема / ошибка у вас на самом деле, однако...

Не использовать Page_Load связать или получить доступ к вашему FormViewвместо этого используйте FormView"s DataBound событие и CurrentMode свойство:

protected void fvJobApplying_DataBound(object sender, System.EventArgs e)
{
    if(fvJobApplying.CurrentMode == FormViewMode.ReadOnly)
    {
        // here you can safely access the FormView's ItemTemplate and it's controls via FindControl
        Label PT = (Label)fvJobApplying.FindControl("lblPrimaryTool");
        PT.Visible = true;
    }
    else if(fvJobApplying.CurrentMode == FormViewMode.Edit)
    {
        // here  you can safely access the FormView's EditItemTemplate and it's controls via FindControl
    }
    else if(fvJobApplying.CurrentMode == FormViewMode.Insert)
    {
        // here you can safely access the FormView's InsertItemTemplate and it's controls via FindControl
    }
}

Так что найдите там свои ярлыки и установите желаемый Visibility, Это событие срабатывает, когда вы DataBind FormView.

Другие вопросы по тегам