Mettre le focus sur un contrôle gridview de la ligne sélectionnée après la publication
Est-il possible de mettre le focus sur un contrôle gridview ligne après qu'une sélection de la ligne génère une publication?
J'essaye d'ajouter un onkeydown gestionnaire sur le contrôle gridview lignes pour utiliser le clavier pour la navigation. Mon problème, je crois, c'est qu'après la première publication, la cellule sélectionnée perd le focus, et donc la prochaine course de touche n'est pas pris par la cellule.
J'ai le code suivant
L'affichage de la grille
<asp:GridView runat="server" ID="gdvPersons" AutoGenerateColumns="false"
onrowcreated="gdvPersons_RowCreated" onselectedindexchanged="gdvPersons_SelectedIndexChanged">
<Columns>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<%# ((GridviewFocus.Person) Container.DataItem).Name %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Age">
<ItemTemplate>
<%# ((GridviewFocus.Person) Container.DataItem).Age %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Le Code derrière
protected void Page_Load(object sender, EventArgs e)
{
var persons = new List<Person> {new Person() {Name = "Fikre", Age = 24},
new Person() {Name = "Mike", Age = 29},
new Person() {Name = "Mark", Age = 35}};
gdvPersons.DataSource = persons;
gdvPersons.DataBind();
}
protected void gdvPersons_RowCreated(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
e.Row.Attributes.Add("onkeydown", ClientScript.GetPostBackEventReference((Control)sender, "Select$" + e.Row.DataItemIndex));
}
protected void gdvPersons_SelectedIndexChanged(object sender, EventArgs e)
{
gdvPersons.SelectedRow.Focus();
}
Vous devez vous connecter pour publier un commentaire.
Sur votre onkeydown code de script de copie de l'id de la cellule à un champ caché.
l'exemple ci-dessus est du pur html, et vous devrez ajouter de la bonne onkeydown code à votre gridview.
Dans votre publication (par exemple onclick) code de gestionnaire d'événements, vous pouvez récupérer l'id de la les champs cachés de la valeur de la propriété et de s'inscrire javascript à exécuter une fois que la page est actualisée. Si vous avez un bouton sur lequel l'utilisateur a cliqué qui effectue la publication que vous pourriez faire quelque chose comme ceci:
Cela devrait rendre votre page d'exécuter le script suivant une fois que c'est chargé, et le contrôle doit retrive focus: