【发布时间】:2010-07-22 15:31:56
【问题描述】:
我有一个允许插入的 Telerik radgrid。单击“添加新记录”按钮后,会出现带有几个按钮的文本框。一个用于插入,一个用于取消。我希望页面焦点位于插入按钮上,因此当用户单击输入按钮时,插入按钮具有焦点。
有人知道怎么做吗?
【问题讨论】:
-
您或您的公司正在向 Telerik 支付支持费用。我建议您使用它:-) 获得答案的机会更多,他们的支持非常好。
我有一个允许插入的 Telerik radgrid。单击“添加新记录”按钮后,会出现带有几个按钮的文本框。一个用于插入,一个用于取消。我希望页面焦点位于插入按钮上,因此当用户单击输入按钮时,插入按钮具有焦点。
有人知道怎么做吗?
【问题讨论】:
这未经测试,但我假设您会在 ItemCreated 事件中进行测试:
Protected Sub RadGrid1_ItemCreated(ByVal sender As Object, ByVal e As GridItemEventArgs)
If TypeOf e.Item Is GridCommandItem Then
Dim myButton As LinkButton = TryCast(e.Item.FindControl("myButtonID"), LinkButton)
myButton.Focus()
End If
End Sub
【讨论】:
从概念上讲,应该是可能的。
根据我的回忆,添加新记录按钮会导致回发。在该回发中,挂钩 RadGrid 的相应事件并注入 javascript 以聚焦按钮。
如果您通过模板定义编辑表单,您也可以通过在包含编辑器控件的面板上使用DefaultButton 属性来摆脱它。
我也同意 Claudio 的观点,即 Telerik 支持很棒。您可能希望从它们开始,因为它们可能会为您提供完成任务的完整代码示例。
【讨论】:
我找到了答案,它几乎就像 Markive 一样,这里是 c# 版本,我使用的是 ImageButton 而不是 LinkButton:
protected void gvApplications_ItemDataBound(object sender, GridItemEventArgs e)
{
//when a user clicks the "Add New" button,
//this code puts focus on the Insert button so when the enter key is clicked, the action occurs
if (e.Item is GridEditFormInsertItem && e.Item.OwnerTableView.IsItemInserted)
{
GridEditFormInsertItem insertItem = (GridEditFormInsertItem)e.Item;
ImageButton btnInsert = (ImageButton)insertItem.FindControl("PerformInsertButton");
btnInsert.Focus();
}
}
【讨论】: