2012-10-05 101 views
1

我想分配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 
} 

有什麼辦法可以點擊事件添加到面板?

+1

在asp.net中沒有面板的Click事件,你可以試試它的Javascript見:http://forums.asp.net/t/1315282.aspx/1/10 – Habib

回答

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框架在cilent邊渲染__doPostBack函數。如果您的網頁包含導致自動回發的控件,則不需要此代碼。

1

鼠標點擊事件使用jQuery 1.7:

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

如果你想要一個更簡單的解決方案,在面板關閉標籤之前放置一個按鈕,設置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的做魔術!