如何在 ASP.NET 中设置内容页的默认按钮?

18

我需要设置内容页的默认按钮。我的代码如下:

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent" 
defaultbutton="BtnSearch" defaultfocus="TxtSearchValue">

我的网页正常运行,但是我的母版页菜单有一个图像按钮,例如聊天,我可以按回车键触发图像按钮的点击事件,但无法触发内容页中的默认按钮。

如何处理这种问题?


你应该能够使用以下资源 http://weblogs.asp.net/scottgu/archive/2005/08/04/421647.aspx 来解决这个问题。 - Luke Baughan
这是一个错误聚焦,而不是默认按钮。@bUKaneer - Vishal Suthar
可能是ASP.NET主页面DefaultButton覆盖的重复问题。 - KV Prajapati
5个回答

39

1) 你只需要执行以下操作:

this.Form.DefaultButton = this.btnId.UniqueID;

或者

2) 使用 Javascript:

function clickButton(e, buttonid)
{

  var evt = e ? e : window.event;

  var bt = document.getElementById(buttonid);

  if (bt)
  {
      if (evt.keyCode == 13)
      {
            bt.click();
            return false;
      }
  }
}

并且从代码后端:

ContentPage.Attributes.Add("onkeypress", "javascript:return 
clickButton(event,'" + btnSearch.ClientID + "');");

你可以尝试第二个解决方案,它应该可以工作。@hmk - Vishal Suthar
在哪里可以编写ContentPage.Attributes.Add,我的意思是主页面代码后面还是内容页面代码后面? - hmk
我可以编写contentpageid.attributes,但在content page load事件中显示错误,不存在。 - hmk
请使用 this.Form 替代 contentpageid - Vishal Suthar
这也是同样的问题,按下回车键总是触发btnSearch事件,我可以使用tab将焦点更改到另一个按钮,例如取消按钮,但在按下回车键时仍会触发btnsearch事件,但我已经有了取消按钮事件,请给我建议Suthar。 - hmk
显示剩余2条评论

11

问题出在母版页和内容面板上。这被忽略了。 - NINtender

8

将所有的asp.net控件和按钮都放在Panel中,并将Panel的默认按钮属性设置为某个按钮的id。


5
请尝试这段代码。
protected void Page_Load(object sender, EventArgs e)
    {
        this.form1.DefaultFocus = txtSearch.ClientID;
        this.Form.DefaultButton = btnSearch.UniqueID;
    }

2
this.Page.Form.DefaultButton = btnSave.ID;

3
如果涉及到容器(例如主页面),则应使用btnSave.UniqueID - BRass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接