Добавить событие мыши на панель
Я хочу назначить 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
.