更改下拉值变化的禁用选项卡的类别

问题描述:

我有1个下拉菜单并基于下拉选项卡将启用或禁用。默认情况下,我为所有选项卡使用getTabContainerCssClass(),它会将所有选项卡显示为启用视图,但是我想更改选项卡css类,因为它在更改下拉值后看起来被禁用。更改下拉值变化的禁用选项卡的类别

DropDownChoice ProductDropDown = new DropDownChoice("ProductList", new PropertyModel(this, "SupplierProduct"),ProductList, new choiceRenderer("name","id")); 
add(supplierProductDropDown); 

supplierProductDropDown.add(new AjaxFormComponentUpdatingIndicatingBehavior("onchange"){ 
      @Override 
      protected void onUpdate(AjaxRequestTarget target) { 
       /* do some code for changing dropdown */ 
      } 
     }); 

tabs = new ArrayList<AbstractTab>(); 

/* provide some tab details */ 

tab = new AjaxTabbedPanel("tabs", tabs){ 

     private static final long serialVersionUID = 1L; 

     @Override 
     protected String getTabContainerCssClass() { 
      return "producttab-row"; 
     } 
     @Override 
     protected WebMarkupContainer newLink(String linkId, final int index) { 

      return new Link(linkId) 
      { 
        private static final long serialVersionUID = 1L; 

        public void onClick() { 
          setSelectedTab(index); 
        } 

        @Override 
        public boolean isEnabled() { 
         if(index == 1 && /*drop down condition that will be disable the tab*/){ 
          /*I want to change css of this tab*/ 
          return false; 
         } 
         else{ 
          return true; 
         } 
        } 
      } 
     } 
} 

这个任何想法......

更新:更新代码

@Override 
        protected void onComponentTag(final ComponentTag tag) { 
        // TODO Auto-generated method stub 
         super.onComponentTag(tag); 
         if(/*Dropdown condition*/){ 

          tag.append("class", "disabletab", " "); 
         } 
} 

后,但它并没有为此工作。请帮助

SOLUTION:我在AjaxTabbedPanel.see覆盖onComponentTag下面的代码

tabs = new ArrayList<AbstractTab>(); 

/* provide some tab details */ 

tab = new AjaxTabbedPanel("tabs", tabs){ 

    private static final long serialVersionUID = 1L; 

    @Override 
    protected String getTabContainerCssClass() { 
     return "producttab-row"; 
    } 
@Override 
      protected void onComponentTag(final ComponentTag tag) 
      { 
      super.onComponentTag(tag); 

      String cssClass = tag.getAttribute("class"); 
      if (cssClass == null) 
      { 
       cssClass = " "; 
      } 
      /*check condition and change css classname*/ 
      tag.put("class", cssClass.trim()); 
     } 
} 
+0

看起来好像没有正确更新 – soorapadman

+0

@soorapadman我没有明白你的观点。请告诉我我错在哪里 – nitin

+0

我假设你正在改变标签面板的下拉菜单。为了在使用Ajax事件的选项卡中进行更改,U应该使用'target.add'更新组件,因为您共享的代码较少,我无法得到确切的问题。 – soorapadman

,你应该重写Link#onComponentTag(ComponentTag)方法,使用设置的CSS类:tag.append("class", "dynamicValueDependingOnDropDownsModel", " ")

+0

dynamicValueDependingOnDropDownsModel应该是dynamaic类名,这是我想改变的。 – nitin

+0

嗨马丁-g我有更新我的问题与您的建议,但没有工作。请帮忙。 – nitin

+0

嗨@ martin-g我有更新我的问题与您的建议,但没有工作。请帮忙。 – nitin