Je dispose d'une liste déroulante et l'onglet Valeurs de la liste déroulante sera activé ou désactivé. Par défaut, j'utilise getTabContainerCssClass() pour tous les onglets et il affichera tous les onglets comme vue active, mais je veux changer une tabulation de la classe css car elle semble être désactivée après avoir changé la valeur de la liste déroulante.Modification de la classe de l'onglet désactivé lors du changement de la valeur de la liste déroulante
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;
}
}
}
}
}
Toute idée sur ce ......
MISE À JOUR: après la mise à jour du code
@Override
protected void onComponentTag(final ComponentTag tag) {
// TODO Auto-generated method stub
super.onComponentTag(tag);
if(/*Dropdown condition*/){
tag.append("class", "disabletab", " ");
}
}
Mais il n'a pas travaillé sur ce point. S'il vous plaît aider
SOLUTION: J'Override onComponentTag dans AjaxTabbedPanel.see ci-dessous le code
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());
}
}
ne ressemble pas à la mise à jour correctement – soorapadman
@soorapadman Je n'ai pas compris votre point. Se il vous plaît dites-moi où je me trompe – nitin
Je suppose Onchange de liste déroulante que vous modifiez le panneau à onglets. Afin de changer dans les onglets en utilisant Ajax événement U devrait avoir mettre à jour le composant en utilisant 'target.add' quelque chose comme ça, Puisque vous avez partagé moins de code je ne peux pas obtenir quel est le problème exact. – soorapadman