1

次のような ASP ボタンがあります。

<asp:Button 
  ID="btnReset" 
  runat="server" 
  OnClientClick = "hideOverlay('<%=pnlOverlay.ClientID %>', '<%=pnlAddComment.ClientID  %>');"
  CssClass ="btnCancel PopUpButton"
/>

問題は、de hideOverlay 部分の asp タグです。うまくいきません。機能しないのはなぜですか? どうすれば修正できますか?

4

4 に答える 4

3

以下の例を試してください

最初の例

aspxで

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="btnReset" runat="server" CssClass="btnCancel PopUpButton" />
        <asp:Panel ID="pnlOverlay" runat="server">
        </asp:Panel>
        <asp:Panel ID="pnlAddComment" runat="server">
        </asp:Panel>        
    </div>
    </form>
</body>
</html>

コードビハインドで

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Default10 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       btnReset.Attributes.Add("onclick", string.Format("hideOverlay('{0}','{1}')", pnlOverlay.ClientID, pnlAddComment.ClientID));

    }
}

ボタンの以下のソースを生成します

<input type="submit" name="btnReset" value="" onclick="hideOverlay('pnlOverlay','pnlAddComment');" id="btnReset" class="btnCancel PopUpButton" />

2 番目の例

Aspx で

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="btnReset" runat="server" CssClass="btnCancel PopUpButton" OnClientClick=<%# "hideOverlay('" + pnlOverlay.ClientID + "', '" + pnlAddComment.ClientID +"');" %> />
        <asp:Panel ID="pnlOverlay" runat="server">
        </asp:Panel>
        <asp:Panel ID="pnlAddComment" runat="server">
        </asp:Panel>        
    </div>
    </form>
</body>
</html>

コードビハインドで

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Default10 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        btnReset.DataBind(); 
    }
}

ボタンの以下のソースを生成します

<input type="submit" name="btnReset" value="" onclick="hideOverlay('pnlOverlay', 'pnlAddComment');" id="btnReset" class="btnCancel PopUpButton" />

3 番目の例

aspxで

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="btnReset" runat="server" CssClass="btnCancel PopUpButton" OnClientClick="hideOverlay();" />
        <asp:Panel ID="pnlOverlay" runat="server">
        </asp:Panel>
        <asp:Panel ID="pnlAddComment" runat="server">
        </asp:Panel>        
    </div>
    </form>
</body>
<script type="text/javascript" >
    function hideOverlay()
    {
        var pnlOverlayID = '<%= pnlOverlay.ClientID %>';
        var pnlAddCommentID = '<%= pnlAddComment.ClientID %>';

        //Do your stuff
    }
</script> 
</html>

スクリプト部分の次のソースが生成されます

<script type="text/javascript" >
    function hideOverlay()
    {
        var pnlOverlayID = 'pnlOverlay';
        var pnlAddCommentID = 'pnlAddComment';

        //Do your stuff
    }
</script> 
于 2009-08-05T14:59:12.403 に答える
0

コードを次のように変更します。

<asp:Button 
  ID="btnReset" 
  runat="server" 
  OnClientClick=<%# "hideOverlay('" + pnlOverlay.ClientID + "', '" + pnlAddComment.ClientID +"');" %>
  CssClass ="btnCancel PopUpButton"
/>

または使用するとさらに良いstring.Format()

OnClientClick=<%# string.Format("hideOverlay('{0}', '{1}');", pnlOverlay.ClientID,pnlAddComment.ClientID) %>

そして、リンクをデータバインドすることを忘れないでください。はい、それらはタグ内で使用されるため、onclientclickありません"<%# %>

于 2009-04-01T11:53:17.297 に答える
0

これを試すことができます。

私。コードビハインドで

btnReset.OnClientClick = "hideOverlay'"+pnlOverlay.ClientID+"','"+pnlAddComment.ClientID+"')";

ii. 2 つ目の方法は、インライン JavaScript を使用することです。

<asp:Button ID="btnReset" runat="server" OnClientClick = "newhideOverlay()" CssClass
="btnCancel PopUpButton"/>

<script type="text/javascript">

function newhideOverlay() 

{    
      hideOverlay('<%=pnlOverlay.ClientID %>', '<%=pnlAddComment.ClientID  %>');

} 

</script>

また、ボタンの前に pnlOverlay と pnlAddComment の両方が読み込まれるようにします。

于 2009-04-01T13:51:07.543 に答える
0

インライン コードで「=」を「#」に置き換えてみてください。例: <%=pnlOverlay.ClientID %> => <%#pnlOverlay.ClientID %>のように、ClientIdがコンパイル時にインスタンス化されるようにします。

OnClientClickは、javascript コードなどのクライアント側スクリプトを呼び出すためにのみ使用されます。コード ビハインドでメソッドを呼び出そうとしている場合は、OnClickイベントを使用する必要があります。

于 2009-04-01T10:16:03.520 に答える