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

时间:2012-10-05 05:22:42

标签: 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
}

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

4 个答案:

答案 0 :(得分:5)

您可以采取以下措施使您的面板可以在服务器端点击并处理该事件。

将面板放在网络表单中

<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函数。如果您的页面包含导致自动回发的控件,则不需要此代码。

答案 1 :(得分:1)

使用jQuery 1.7的Mouseclick事件:

$('#placeholderID').on('click', '#panelID', function(e){ });

答案 2 :(得分:0)

如果你想要一个更简单的解决方案,在面板结束标签之前放一个按钮,make,设置css样式以覆盖整个面板和不透明度: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做魔术!!

答案 3 :(得分:0)

asp:Panel 更改为 asp:LinkButton 或将面板包裹在 LinkBut​​ton 中。这还可以防止 OnClick 与子控件点击(例如 asp:CheckBox)发生冲突。