Je suis un développeur relativement nouveau, et je ne fais ce métier que depuis environ 6 mois à temps plein. Je vous remercie donc par avance de lire et/ou de répondre à ma question.
J'ai un répéteur de données. À l'intérieur de ce répétiteur, j'ai une grille, un SQLDS et deux cases à cocher. Les deux cases à cocher ont un événement OnCheckedChanged et AutoPostback est réglé sur true. Le répéteur a également un événement OnItemDataBound.
Voici un exemple de la façon dont mon code est disposé :
<asp:Repeater ID="Repeater1" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<asp:Panel>
<asp:UpdatePanel>
<ContentTemplate>
<asp:Checkbox ID="Checkbox1" Autopostback="True" OnCheckedChanged="CheckBox1_CheckedChanged">
<asp:Checkbox ID="Checkbox2"Autopostback="True" OnCheckedChanged="CheckBox2_CheckedChanged">
<asp:Gridview ID="Gridview1" DataSourceID="SqlDataSource1">
<asp:SQLDataSource ID="SQLDataSource1" SelectCommand="SP1" SelectCommandType="StoredProcedure">
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
</ItemTemplate>
</asp:Repeater>
Et le C#
protected void Checkbox1_CheckedChanged(object sender, EventArgs e)
{
if (Checkbox1.Checked == true)
{
if (Checkbox2.Checked == true)
SqlDataSource1.SelectCommand = "SP1";
else
SqlDataSource1.SelectCommand = "SP2";
}
else
SqlDataSource1.SelectCommand = "SP3";
}
protected void Checkbox2_CheckedChanged(object sender, EventArgs e)
{
if (Checkbox2.Checked == true)
{
if (Checkbox1.Checked == true)
SqlDataSource1.SelectCommand = "SP3";
else
SqlDataSource1.SelectCommand = "SP2";
}
else
SqlDataSource1.SelectCommand = "SP1";
}
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
//Uses FindControl to Databind the GV and hides it if GV.Rows.Count==0
}
Je fais tout cela dans un TabPanel AJAX. J'ai une autre page où ce code fonctionne parfaitement, mais ce n'est pas à l'intérieur d'un répétiteur sur cette autre page.
Essentiellement, j'ai une page qui se charge avec une grille, et les deux cases à cocher changent le contenu de la grille. Le problème que j'ai, c'est que lorsque vous décochez la case (elles sont cochées au départ), elle 1. Se vérifie à nouveau et 2. Ne déclenche pas l'événement CheckedChanged.
Toute aide serait grandement appréciée.