2011-05-04 175 views
1

我想做this但在asp.net中。我怎麼會在asp.net /後面的代碼中寫這個?我已經有AutoPostBack與jQuery衝突

protected void chkBox_CheckedChanged(object sender, EventArgs e) 
{ 
    if (chkBox.Checked){} 
    else{} 
} 

<asp:Checkbox ID="chkBox" AutoPostBack="True" runat="server" 
     onCheckedChanged="chkBox_CheckedChanged" /> 

,所以我需要在剩下的幫助填充。儘管如此,非常感謝!

更新2: 此方法的工作原理,但消息/ div不顯示足夠長的時間來閱讀文本。發現這是由於AutoPostBack="true"。如何在AutoPostBack完成後調用事件(我猜這就是我需要解決的問題)?

function displayDiv(checkbox) { 
      if (checkbox.checked) { 
       $("#message1").stop(true, true).show().fadeOut(10000); 
       $("#message2").hide(); 
      } 
      else { 
       $("#message1").stop(true, true).hide(); 
       $("#message2").stop(true, true).show().fadeOut(10000); 
      } 
     } 


<asp:CheckBox ID="chkNotifyMe" AutoPostBack="True" runat="server" OnCheckedChanged="chkNotifyMe_CheckedChanged" onclick="displayDiv(this)" /> 
<div id="message1" class="message" ><span>Successfully <small></small></span></div><br /> 
<div id="message2" class="message" ><span>Removed<small></small></span></div> 

(所有的CSS是一樣的)

如此接近我可以嚐嚐吧:再d謝謝!

最終解決 好吧,我已將此添加到我的網頁通過jQuery和它的帖子後致電的AutoPostBack,以顯示我的消息

function pageLoad() { 
      <%# autoLaunchJS %> 
      $("#chkNotifyMe").click(chkNotifyMe_clicked); 
     } 
function chkNotifyMe_clicked(){ 
    var add = $get("chkNotifyMe").checked == true; 
    PageMethods.WishList(add, <%#ID%>, OnSucceeded, OnFailed); 
    } 

    function OnSucceeded(){ 
     refreshStartPage(); 
     if($get("chkNotifyMe").checked){ 
        $("#messageSuccess").stop(true, true).show().fadeOut(5000); 
        $("#messageRemove").hide(); 
     } 
     else{ 
      $("#messageSuccess").stop(true, true).hide(); 
      $("#messageRemove").stop(true, true).show().fadeOut(5000); 
      } 
    } 
+0

我結束了周圍幾個div改變來解決我的AutoPostBack問題 – ComatoseDuck 2011-05-16 22:20:45

回答

2

您可以同時爲客戶端代碼和服務器邏輯進行服務器控制。如果該div的顯示是你打算做的所有事情,那麼它就是純粹的視圖邏輯,並且它絕對是與javascript相關的,並回傳給服務器並刷新視圖將是浪費。

可以稍微改變你的JavaScript來做到這一點

function displayDiv(checkBox) { 
     if (checkBox.checked) { 
          $("#message1").stop(true,true).show().fadeOut(4000); 
      $("#message2").hide(); 
     } 
     else { 
      $("#message1").stop(true,true).hide(); 
      $("#message2").stop(true,true).show().fadeOut(4000); 
     } 

    } 

<asp:Checkbox ID="chkBox" AutoPostBack="True" runat="server" 
     onCheckedChanged="chkBox_CheckedChanged" onclick="displayDiv(this)" /> 
+0

請看我的編輯最高 – ComatoseDuck 2011-05-05 21:15:31

+0

@ComatoseDuck的想法是這樣的http://jsfiddle.net/TYbzN/ – 2011-05-06 12:31:27

+0

@ComatoesDuck在你的第二種方法,你有一切權利,但一件事。 'onclick =「displayDiv(checked)」'應該是'onclick =「displayDiv(this)」'。 – 2011-05-06 12:51:54

1

創建與CSS

<asp:Label id="lblChkchnged" runat="server" CssClass="message" Visible="False" /> 
標籤

然後在您的支票更改事件中設置代碼

lblChkchnged.visible = true; 
lblChkchnged.text = chkBoc.Checked ? "Checked" : "Unchecked"; 

雖然真的,爲什麼不把它作爲一個客戶端的電話,除非你需要做的比這更多?

+0

我很想把它作爲一個客戶電話,我試過了,但它沒有工作 – ComatoseDuck 2011-05-05 14:02:12

+0

什麼沒有工作? – Chad 2011-05-05 15:56:17