Rafraichir DataList lorsqu'une DataList.Item passe à Visible=False
Bonsoir,
J'ai un Ajax Accordion contenant dans chaque Pane une DataList.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
<ajaxToolkit:Accordion ID="Accordion1" runat="server"
onitemdatabound="Accordion1_ItemDataBound" SuppressHeaderPostbacks="True" Width="500"
HeaderCssClass="accordionHeader"
HeaderSelectedCssClass="accordionHeaderSelected"
ContentCssClass="accordionCriteres" TransitionDuration="200"
FadeTransitions="False">
<HeaderTemplate>
<asp:Label ID="LabelZone" runat="server" Text='<%# Eval("LIBELLE_ZONE") %>'></asp:Label>
<asp:HiddenField runat="server" ID="HidTypeBienZone" value='<%# Eval("TYPES_BIEN") %>'></asp:HiddenField>
</HeaderTemplate>
<ContentTemplate>
<asp:HiddenField runat="server" ID="hidZone" value='<%# Eval("ID_ZONE") %>'></asp:HiddenField>
<!--
<asp:DataList ID="DataList1" runat="server" Width="200" Visible="true">
<ItemTemplate>
<asp:Label runat="server" ID="labelCritere" Text='<%# Eval("LIBELLE_CRITERE") %>' value='<%# Eval("LIBELLE_CRITERE") %>' Visible="true"></asp:Label>
</ItemTemplate>
</asp:DataList>
-->
<asp:DataList ID="DataList2" runat="server" DataKeyField="ID_CRITERE"
onitemdatabound="DataList1_ItemDataBound">
<ItemTemplate>
<asp:Label ID="ID_CRITERELabel" runat="server"
Text='<%# Eval("ID_CRITERE") %>' Visible="false" />
<asp:HiddenField runat="server" ID="hidTypeControle"></asp:HiddenField>
<asp:HiddenField runat="server" ID="HidTypeBienCritere" value='<%# Eval("TYPES_BIEN") %>'></asp:HiddenField>
<asp:Label ID="LabelTest" runat="server" Text="Label"></asp:Label>
<asp:Label ID="LabelTest2" runat="server" Text="Label"></asp:Label>
<asp:CheckBox ID="CheckBoxCritere" runat="server" Visible="false" Text='<%# Eval("LIBELLE_CRITERE") %>'/>
<asp:Label ID="LabelCritere" runat="server" Visible="false" Text='<%# Eval("LIBELLE_CRITERE") %>'/>
<asp:TextBox ID="TextBoxCritere" runat="server" Visible="false"></asp:TextBox>
<img alt="" title='<%# Eval("DESCRIPTION_CRITERE") %>' src="App_Themes/Defaut/images/info-critere.gif" />
<br />
</ItemTemplate>
</asp:DataList>
</ContentTemplate>
</ajaxToolkit:Accordion> |
Tout cela se remplit parfaitement.
Parfois, j'ai besoin de masquer certains éléments. J'ai donc une méthode censée le faire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
public void AfficherCriteres()
{
string type = ";" + TypeBien.ToString() + ";";
for (int i = 0; i < Accordion1.Panes.Count; i++)
{
string test = ((HiddenField)Accordion1.Panes[i].HeaderContainer.FindControl("HidTypeBienZone")).ClientID;
if (((HiddenField)Accordion1.Panes[i].HeaderContainer.FindControl("HidTypeBienZone")).Value.Contains(type))
Accordion1.Panes[i].Visible = true;
else
Accordion1.Panes[i].Visible = false;
DataList DataList = (DataList) Accordion1.Panes[i].FindControl("DataList2");
for (int j = 0; j < DataList.DataKeys.Count; j++)
{
string test2 = ((HiddenField)DataList.Items[j].FindControl("HidTypeBienCritere")).Value;
string test3 = ((Label)DataList.Items[j].FindControl("LabelCritere")).Text;
if (((HiddenField)DataList.Items[j].FindControl("HidTypeBienCritere")).Value.Contains(type))
DataList.Items[j].Visible = true;
else
DataList.Items[j].Visible = false;
}
}
} |
Lorsque je l'appelle, le nombre de Panes se réajuste bien.
Si j'ai
Code:
Accordion1.Panes[i].Visible = false;
l'Accordion se raffraichit avec la Pane en moins.
En revanche,
Code:
DataList.Items[j].Visible = false;
ne produit rien.
J'ai vérifié en debug, je passe bien dans cette ligne de code mais à l'affichage, aucun changement.
Sauriez-vous me dire comment "forcer" le rafraichissement de la DataList ?
Merci,
T.