1
是否有可能將焦點放回到gridview行之後,該行的選擇生成回發?在回發後將焦點放回gridview的選定行
我想在gridview行上添加一個onkeydown處理程序,以便使用鍵盤進行導航。我相信,我的問題是,在第一次回發之後,所選單元格失去焦點,所以下一個關鍵筆劃不會被單元格捕獲。
我有以下代碼
網格視圖
<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();
}
我有一個去你的解決方案,但即時通訊視圖的行ID'麻煩。我將我的原始代碼包含到問題 – Fikre 2010-07-05 20:24:33
您發佈的代碼中沒有編輯字段。那麼你打算怎麼做導航?您能否提供更完整的示例,並且使用.net3.5還是4.0? – 2010-07-06 06:27:36
即時將onkeydown事件添加到gdvPersons_RowCreated事件中的每一行。 我的代碼的問題是,一個表格行需要一個選項卡索引才能獲得焦點。 我也改變了gdvPersons.SelectedRow.Focus();與您的代碼聚焦行,所以我標記爲答案。謝謝 – Fikre 2010-07-06 20:27:02