3

mouseclickイベントを次の場所に割り当てたいasp.net panel:

protected void Page_Load(object sender, EventArgs e)
{
    Panel p = new Panel();
    p.Click += new EventHandler(b_Click);//but, this doesn't compiles correctly
}
protected void b_Click(object sender, EventArgs e) 
{
     //C#code
}

パネルにクリックイベントを追加する方法はありますか?

4

4 に答える 4

5

パネルをクリック可能にし、サーバー側でイベントを処理するためにできることは次のとおりです。

パネルを Web フォームに配置する

<asp:Panel runat="server" ClientIDMode="Static" ID="clickMe">
    Click here
</asp:Panel>

jQuery スクリプト ライブラリをページに追加します。

<script src="http://code.jquery.com/jquery.min.js" language="javascript"
        type="text/javascript"></script>

次のクライアント側イベント ハンドラーを定義します。

$(document).ready(function() {
    $("#clickMe").click(function () {
        __doPostBack('clickMe', '');
    });
});

サーバー側でイベントを処理します。

protected void Page_PreRender(object sender, EventArgs e)
{
    this.Page.ClientScript.GetPostBackEventReference(clickMe, "");
}

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.Form["__EVENTTARGET"] == "clickMe")
    {
        ClickMeOnClick();
    }
}

PreRender イベント ハンドラーのコードは、asp.net フレームワークが __doPostBack 関数をサイレント側でレンダリングするためのものです。ページに自動ポストバックを引き起こすコントロールが含まれている場合、このコードは必要ありません。

于 2012-10-05T06:39:08.133 に答える
1

jQuery 1.7 でのマウスクリック イベント:

$('#placeholderID').on('click', '#panelID', function(e){ });
于 2012-10-05T06:15:41.257 に答える
0

より簡単な解決策が必要な場合は、パネルの終了タグの前にボタンを配置し、作成し、css スタイルを設定してパネル全体と opacity:0 をカバーし、z-index を調整して他の要素をカバーしないようにし、onclick メソッドを使用します。コードビハインドで。

例:

CSS:

btn-panel{
    position: fixed;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
    opacity: 0;
    z-index: -1;
}

asp:

<asp:Panel ID="myPanel" runat="server" >

            //all your other elements here...
            <asp:Button ID="Button1" runat="server" Text="" CssClass="btn-panel"
                OnClick="YourButton_Click" />
</asp:Panel>

コードビハインド:

protected void YourButton_Click(object sender, EventArgs e)
    {
       // Your Code Here...
    }

ほら、魔法を行うためのjavascriptもjqueryもありません!!

于 2016-07-29T08:03:03.297 に答える