Tag: dopostback

使用PostBackOptions.TrackFocus在后置文件中保持控制焦点

保持对后卫的关注是一项显然很困难的任务。 搜索谷歌,你会发现很多人都渴望同样的东西,但所有人都有不同的联系,而且主要是定制的。 我想避免自定义实现,特别是如果它支持.NET的方式。 经过一些非常深入的搜索,我遇到了PostBackOptions.TrackFocus,在另一个堆栈溢出post中静静地提到。 根据MSDN: 获取或设置一个值,该值指示回发事件是否应将页面返回到当前滚动位置并将焦点返回到当前控件。“ 神圣的废话,这是由.NET 4支持的吗? 真棒。 但是我们有大量的自定义控件,.NET如何知道如何将焦点设置在控件上? 我不知道。 查看System.Web.UI.Control的MSDN文档,有一个有趣的方法: public virtual void Focus() “使用Focus方法将网页的初始焦点设置为控件。页面将在浏览器中打开,并选择控件。” 好吧,显然可以覆盖。 但是这样做的推荐方法是什么? 它返回void。 没有例子。 无法在实现中找到任何覆盖此方法的人的示例。 但是,在重写它并且除了抛出exception之外什么也没做什么之后,很明显,这不是ASP.NET如何专注于在回发之前具有焦点的控件:它永远不会被调用。 在使用Firebug进行了大量调试之后,我发现启用PostBackOptions.TrackFocus是有效的! 有时。 很明显,只有在控件调用__doPostBack JavaScript方法时才会保持控件的焦点。 启动PostBack的其他控件(当在控件内按Enter键时),调用WebForm_OnSubmit(),它不会更新ASP隐藏字段__LASTFOCUS。 __doPostBack在设置隐藏字段后调用WebForm_OnSubmit()。 这是我目前陷入困境的地方。 看起来好像我需要把所有东西都叫做__doPostBack,无论如何。 有关TrackFocus使用的非常非常少的文档。 那么有人从这里得到任何提示吗?