J'ai un GridView
qui vous permet de cliquer sur une ligne et d'appeler la fonction SelectedIndexChanged
(qui met à jour une autre partie de la page en fonction de la ligne sélectionnée). J'ai déjà fait quelque chose de similaire et cela a fonctionné, mais je n'arrive pas à faire en sorte que la méthode de mise à jour de la page soit utilisée. SelectedIndexChanged
pour être appelé pour une raison quelconque.
La page est maintenue dans une page maître qui a une form runat="server"
et une étiquette <asp:ScriptManager>
étiquette
J'utilise e.Row.Attributes.Add("onclick", ClientScript.GetPostBackClientHyperlink(Me.gridMessages, "Select$" & e.Row.RowIndex))
pour permettre à la SelectedIndexChanged
à déclencher en cliquant n'importe où sur la ligne.
Pour vérifier que le code fonctionne bien en dehors de cela, j'ai ajouté un CommandField
avec un SelectButton
et cela se déclenche avec succès, mais je préférerais trouver une solution sans avoir à utiliser cela.
Le code est ci-dessous - toute aide serait appréciée. Merci
GridView
:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:HiddenField runat="server" ID="hdnScrollPosition" />
<asp:GridView ID="gridMessages" runat="server" CssClass="gridView" AutoGenerateColumns="False"
AllowPaging="true" GridLines="None" PageSize="10" ShowHeader="True"
EmptyDataText="--No Messages Received--" Width="100%">
<Columns>
<asp:TemplateField HeaderText="Messages Received" HeaderStyle-HorizontalAlign="Left" HeaderStyle-CssClass="headerClass">
<ItemTemplate>
....
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
Code-Behind :
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Me.gridMessages.DataSource = ...
Me.gridMessages.DataBind()
End If
End Sub
Protected Sub gridMessages_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gridMessages.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#D2E6F8'")
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#ffffff'")
e.Row.Attributes.Add("onclick", "saveScrollPosition(); " & ClientScript.GetPostBackClientHyperlink(Me.gridMessages, "Select$" & e.Row.RowIndex))
End If
End Sub
SelectedIndexChanged
(qui ne se déclenche jamais) :
Protected Sub gridMessages_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles gridMessages.SelectedIndexChanged
Response.Redirect("test.aspx")
End Sub