将鼠标点击事件添加到面板

Nur*_*lan 1 c# asp.net panel mouseclick-event

我想将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
}
Run Code Online (Sandbox Code Playgroud)

有没有办法将click事件添加到面板?

Yiğ*_*ner 5

您可以执行以下操作来使面板可单击并在服务器端处理事件.

将面板放在Web表单中

<asp:Panel runat="server" ClientIDMode="Static" ID="clickMe">
    Click here
</asp:Panel>
Run Code Online (Sandbox Code Playgroud)

将jQuery脚本库添加到您的页面.

<script src="http://code.jquery.com/jquery.min.js" language="javascript"
        type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

定义以下客户端事件处理程序

$(document).ready(function() {
    $("#clickMe").click(function () {
        __doPostBack('clickMe', '');
    });
});
Run Code Online (Sandbox Code Playgroud)

在服务器端处理事件.

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

PreRender事件处理程序中的代码用于asp.net框架,以便在静默方面呈现__doPostBack函数.如果您的页面包含导致自动回发的控件,则不需要此代码.