Добавить событие мыши на панель

Я хочу назначить 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 ответа

Решение

Вот что вы можете сделать, чтобы сделать вашу панель кликабельной и обрабатывать событие на стороне сервера.

Поместите панель в веб-форму

<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 на безмолвных сторонах. Если ваша страница содержит элемент управления, который вызывает автоматическую обратную передачу, этот код вам не нужен.

Событие мышки с помощью jQuery 1.7:

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

Если вы хотите более простое решение, поместите кнопку перед тегом закрытия панели, сделайте, задайте стиль css для покрытия всей панели и непрозрачность:0, настройте z-index, чтобы не покрывать другие ваши элементы, и просто используйте метод onclick в коде позади.

пример:

CSS:

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

жерех:

<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 для создания магии!

Изменить asp:Panelчтобы asp:LinkButtonили оберните панель в LinkButton. Это также препятствует OnClickот борьбы с кликами по управлению детьми, такими как asp:CheckBox.

Другие вопросы по тегам