Est-il possible de remettre le focus sur une ligne gridview après qu'une sélection de la ligne génère une publication?Remettre le focus sur la ligne sélectionnée d'un gridview après la publication
J'essaie d'ajouter un gestionnaire onkeydown sur les lignes grilleview afin d'utiliser le clavier pour la navigation. Mon problème, je crois, est qu'après la première publication, la cellule sélectionnée perd le focus, et donc le coup de touche suivant n'est pas attrapé par la cellule.
J'ai le code suivant
La vue 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();
}
J'ai essayé votre solution, mais j'ai des problèmes avec les identifiants des lignes du gridview. J'ai inclus mon code original à la question – Fikre
Il n'y a pas de champs d'édition dans le code que vous avez posté. Alors, comment avez-vous l'intention de faire de la navigation? Pourriez-vous fournir un échantillon plus complet et utilisez-vous .net3.5 ou 4.0? –
Im ajoutant l'événement onkeydown à chaque ligne de l'événement gdvPersons_RowCreated. Le problème avec mon code est qu'une ligne de table a besoin d'un index de tabulation pour être mise au point. J'ai également changé gdvPersons.SelectedRow.Focus(); avec votre code pour la mise au point de la rangée, donc je l'ai marqué comme la réponse. Merci – Fikre