2011-12-13 72 views
0

我很難繞過AutoPostBack與ASP.NET組件,並希望有人可以提供幫助。我已經瀏覽了多個查詢,但沒有什麼是真正的幫助。C#函數,然後Javascript函數事件(ASP.NET)

我有我的頁面上的「提交」按鈕單擊應該做兩件事情的時候:
1.運行服務器端的C#的功能,在一個div標籤更新一堆<asp:Labels
2.運行一個可以移動東西並使<div標記可見的JavaScript動畫。

我的功能本身工作得很好,但我的問題是與autopostback。如果我使用<asp:Button回發刷新和JavaScript動畫與它一起撤消。如果我使用<input type="button"標記,我無法運行C#和Javascript函數。我已經試過如下:

  1. <input type="button" runat="server" onclick="c#function" onclientclick="javascriptFunction(); return false;"
    ** RUNAT = 「服務器」,似乎該按鈕只允許回傳

  2. <asp:Button
    ** C#函數使用Page.ClientScript.RegisterStartupScript調用JavaScript函數,但回發失敗的動畫。

我希望能夠保持JavaScript動畫,因爲他們使界面非常乾淨和直觀,所以任何幫助保持它非常感激。有什麼建議麼?

+0

它看起來像系統吃了你的文章的一部分。 – Becuzz

+0

是的,我的第一篇文章,我將不得不學習所有的格式化功能,看起來可能非常好。我甚至沒有機會修復它,這意味着人們實際上檢查這個網站:) – KannedFarU

+0

只要你知道,當你寫你的文章,你可以看到下面的預覽,你在哪裏打字,顯示所有的格式。這樣你不會不小心發佈一個不完整的問題=) – jadarnel27

回答

0

您可以使用ajax。您可以通過ajax將值傳遞到服務器頁面,並讓服務器頁面處理(在表格中插入記錄/發送電子郵件給某人/任何....)它並將結果返回給您。直到你得到你的結果。您可以向用戶顯示「正在處理...」消息。

這裏是一個插件,具有塊效應。 http://jquery.malsup.com/block/

下面是如何做到這一點的AJAX(使用jQuery)一個小例子

HTML

<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
    <head> 
    <body> 
     <input type="button" id="btnGetProd" value="Get Products" /> 
     <div id="divProducts"></div> 

<script type="text/javascript"> 

$("#btnGetProd").click(function(){ 

    $("#divProducts").html("Processing your request....</div>").fadeIn(100, function()       
    { 
     $.ajax({ 
      url: "myajaxserverpage.aspx?mode=getprodcusts&category=3", 
      success: function (data) { 
       $("#divProducts").html(data).fadeIn(100); 
      }, 
      error: function (req, textStatus, error) { 
       alert("Some error occured"); 

      } 

     }) 
    }); 
    }); 
</script> 


</body> 
    </html> 

,你應該有一個頁面調用myajaxserverpage.aspx返回的內容(例如:產品列表)

上面的代碼是做什麼的,當用戶點擊按鈕,它顯示文本「處理您的請求...」在div中,然後做一個aja x調用aspx頁面。一旦它接收到響應,它就把它放到div上,然後做一個淡入效果。

+0

嗯..但我該如何調用C#函數呢?如前所述,我的#divProducts包含一組預定義的 KannedFarU

+0

您可以在myajaxserverpage.aspx的代碼隱藏中使用C#函數。你想要的標籤?任何其他字符串?或一個CSS更改? – Shyju

+0

包含標籤的div最初將其CSS可見性設置爲隱藏。點擊提交按鈕後,包含提交按鈕的div滑動到頁面的頂部,並顯示包含標籤的div(希望使用來自SQLDataSource的正確數據)。這是預期的結果。但是,autopostback會將CSS恢復到隱藏原始位置的原始狀態。 – KannedFarU

0

您所遇到的情況是預期的。瀏覽器將執行javascript,然後向服務器發送請求。服務器處理請求併發送響應。客戶將會呈現迴應。此時,由於收到新的請求,所做的任何UI更改都將被丟棄。

爲了解決這個問題,你需要在你的頁面中加入ajax。

0

替代方式達到您的需求 1.let按鈕只做javascript功能 2。讓javascript函數在完成動畫後做回發 ajax不是必需的