Trigger n'étant pas déclenché au première click
Bonjour à tous,
Je suis occupé à faire une page qui contient une zone répétée pour afficher le contenu d'une liste avec un formulaire en dessous pour mettre à jour les informations.
Pour limiter les refresh, j'ai utilisé des updatePanel comme suit:
Page ASPX:
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
<asp:UpdatePanel ID="upContentList" runat="server">
<ContentTemplate>
<asp:Repeater ID="rptContentList" runat="server">
<HeaderTemplate>
<table>
<tr>
<th>Identifiant</th>
<th>Nom du groupe</th>
<th>Description</th>
<th>Niveau d'accès</th>
<th>Actions</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Container.DataItem("IdGroup")%></td>
<td><%# Container.DataItem("InternalName")%></td>
<td><%# Container.DataItem("Description")%></td>
<td><%# Container.DataItem("IdLevel")%></td>
<td>
<asp:ImageButton ID="iBtnEditGroup" runat="server" CommandName="EditGroup"
CommandArgument='<%# Container.DataItem("IdGroup")%>'
ImageUrl='../images/backend/edit.png' AlternateText="Modifier" />
<asp:ImageButton ID="iBtnDeleteGroup" runat="server" CommandName="DeleteGroup"
CommandArgument='<%# Container.DataItem("IdGroup")%>'
ImageUrl='../images/backend/trash.png' AlternateText="Supprimer" />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<asp:UpdatePanel ID="upContentEdit" runat="server">
<ContentTemplate>
<div class="ContentEditing">
<asp:Label ID="lblDebug" runat="server" Text="Debug"></asp:Label><br />
<asp:Label ID="lblIdGroup" runat="server" Text="Identifiant :" AssociatedControlID="txtIdGroup"></asp:Label><asp:TextBox ID="txtIdGroup" runat="server" Enabled="False" Width="25px"></asp:TextBox><br />
<asp:Label ID="lblGroupName" runat="server" Text="Nom du groupe :" AssociatedControlID="txtGroupName"></asp:Label><asp:TextBox ID="txtGroupName" runat="server" MaxLength="50"></asp:TextBox><br />
<asp:Label ID="lblDescription" runat="server" Text="Description :" AssociatedControlID="txtDescription"></asp:Label><asp:TextBox ID="txtDescription" runat="server" MaxLength="250" Width="250px"></asp:TextBox><br />
<asp:Label ID="lblAccessLevel" runat="server" Text="Niveau d'accès :" AssociatedControlID="txtAccessLevel"></asp:Label><asp:TextBox ID="txtAccessLevel" runat="server" Width="25px"></asp:TextBox><br />
<div>
<asp:Button ID="btnSave" runat="server" Text="Enregistrer" /><asp:Button ID="btnCancel" runat="server" Text="Annuler" />
</div>
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="rptContentList" EventName="ItemCommand" />
<asp:AsyncPostBackTrigger ControlID="btnCancel" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="btnSave" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<script type="text/javascript">
$('input[id*="iBtnDeleteGroup"]').click(function () {
return confirm("Etes-vous sûr de vouloir supprimer ce groupe ?\n\n/!\\ Cette action est irréversible /!\\");
});
</script> |
Et dans le code-behind, j'ai ceci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Dim dsGroupList As DataSet = oDa.GroupList()
rptContentList.DataSource = dsGroupList
rptContentList.DataBind()
End If
End Sub
Protected Sub rptContentList_ItemCommand(source As Object, e As RepeaterCommandEventArgs) Handles rptContentList.ItemCommand
Select Case e.CommandName
Case "EditGroup"
Dim dsGroupDetail As DataSet = oDa.GroupDetail(CInt(e.CommandArgument))
txtIdGroup.Text = dsGroupDetail.Tables(0).Rows(0).Item("IdGroup")
txtGroupName.Text = dsGroupDetail.Tables(0).Rows(0).Item("InternalName")
txtDescription.Text = dsGroupDetail.Tables(0).Rows(0).Item("Description")
txtAccessLevel.Text = dsGroupDetail.Tables(0).Rows(0).Item("IdLevel")
Case "DeleteGroup"
End Select
End Sub |
Si je clique sur un des ImageButton pour la première fois, le postback se fait correctement, mais on ne passe pas dans le code "rptContentList_ItemCommand". Au deuxième clic, le traitement est effectué correctement.
Si je retire "If Not Page.IsPostBack Then" dans le Page_Load, chaque clic exécute bien "rptContentList_ItemCommand", mais les données qui me sont retournées ne sont pas bonnes.
Merci d'avance pour votre aide.
jérôme