【问题标题】:ASP.NET Master page DefaultButton overrideASP.NET 母版页 DefaultButton 覆盖
【发布时间】:2010-09-01 03:19:58
【问题描述】:

我有一个带有表单元素的母版页,并且 defaultbutton 属性设置为服务器端 ImageButton。在我的一个页面上,我想通过在 Page_Load 事件中设置 Forms DefaultButton 来“覆盖”母版页默认按钮属性。

即 在主页面:

<form id="form1" runat="server" defaultbutton="btnSearch">....</from>

在“覆盖”母版页属性的页面 Page_Load 事件上:

this.Form.DefaultButton = this.ibRecalc.ID;

错误:

'form1' 的 DefaultButton 必须是 IButtonControl 类型的控件的 ID

我正在使用实现 IButtonControl 的图像按钮

对我可能做错了什么或解决问题的不同方法有什么想法吗?

谢谢

【问题讨论】:

  • ibRecalc 是什么类型的?是否实现了指定的接口?
  • @Tahbaza:ibRecalc 是一个 ASP.NET ImageButton 控件,即它确实实现了 IButtonControl

标签: c# asp.net imagebutton defaultbutton


【解决方案1】:

使用唯一 ID。由于可以有多个服务器控件具有相同的服务器 id,即在一个 GridView 中,框架需要唯一的 id 来匹配。

this.Form.DefaultButton = this.ibRecalc.UniqueID;

【讨论】:

    【解决方案2】:

    您可以尝试使用面板的“DefaultButton”属性...

    将您的按钮或整个页面或 div 放在 asp:Panel 中

    // 开始面板

    asp:Panel ID="pnlOpsCallSummay" runat="server" DefaultButton="btnSearch"

    ............

    //控制你的需求

    .......

    asp:Button ID="btnSearch" runat="server" Text="Search"

    关闭面板

    无需覆盖母版页按钮

    【讨论】:

    • 这很有趣,您将能够在一个页面中拥有多个面板的默认按钮。不错。
    【解决方案3】:

    如果您在登录模板内移动面板:-

    <asp:login id="Login2" runat="server" loginbuttontype="Image">
    <layouttemplate>
       <asp:`enter code here`panel id="Panel1"   runat="\
         server"defaultbutton="LoginImageButton">
       </asp:Panel>
     </LayoutTemplate>
    </asp:Login>
    

    然后它会在没有代码的情况下工作。 您可以根据需要设置 loginbuttontype="Image" 或 Link 或 button。

    【讨论】:

      猜你喜欢
      • 2012-09-10
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 2014-08-25
      相关资源
      最近更新 更多