Можно ли вернуть фокус обратно в строку сетки, после чего выбор строки создает обратную передачу?Положите фокус обратно на выбранную строку сетки после обратной передачи
Я пытаюсь добавить обработчик onkeydown в строки gridview, чтобы использовать клавиатуру для навигации. Моя проблема, я полагаю, заключается в том, что после первого обратного вызова выбранная ячейка теряет фокус, и поэтому следующий ход ключа не попадает в ячейку.
У меня есть следующий код
виде таблицы
<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>
приведен код
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();
}
У меня было решение, но у меня возникли проблемы с идентификаторами строк gridview. Я включил свой исходный код на вопрос – Fikre
. В коде, который вы опубликовали, нет полей редактирования. Итак, как вы собираетесь делать навигацию? Не могли бы вы предоставить более полный образец, и используете ли вы .net3.5 или 4.0? –
Я добавляю событие onkeydown в каждую строку в событии gdvPersons_RowCreated. Проблема с моим кодом заключается в том, что для строки таблицы необходим указатель табуляции, чтобы быть ориентируемым. Я также изменил gdvPersons.SelectedRow.Focus(); с вашим кодом для фокусировки строки, поэтому я отметил его как ответ. благодаря – Fikre