2011-02-28 75 views
0

我正在使用jsTree來組織用戶創建的頁面。在右鍵單擊並按下「重命名」後,我想在後臺啓動一個JS函數,該函數在我的代碼中觸發一個函數,如果可能的話。我希望它抓住我在ID上的任何項目,並在數據庫中重命名它並更新jsTree。jQuery調用返回數據的ASMX Web服務

這裏是一個示例代碼隱藏功能:

[System.Web.Services.WebMethod] 
protected void RenamePage(object sender, EventArgs e) 
{ 
    DataTable dt = new DataTable(); 
    using (SqlConnection con = new SqlConnection(Global.conString)) 
    { 
     con.Open(); 
     using (SqlCommand cmd = new SqlCommand("contentPageUpdate", con)) 
     { 
      cmd.Parameters.Add("@title", SqlDbType.VarChar).Value = Global.SafeSqlLiteral(txtPage.Text, 1); 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.ExecuteNonQuery(); 
     } 
     con.Close(); 

     //Update Content Page Repeater 
     using (SqlCommand cmd = new SqlCommand("contentPageGetAll", con)) 
     { 
      using (SqlDataAdapter da = new SqlDataAdapter(cmd)) 
      { 
       da.Fill(dt); 
      } 
     } 
    } 
} 
+1

是啊,所以 - 你嘗試過這麼遠嗎?你遇到了什麼具體問題? – RPM1984 2011-03-01 00:16:02

+0

我從來沒有使用過jQuery的c#函數。不確定從哪裏開始。需要一個跳躍點。 – balexander 2011-03-01 00:42:30

回答

1

不要把它想成jQuery的打C#的功能,而是打的jQuery由URI標識的資源。

當你用jQuery發出一個AJAX請求時,你給出了目的地的url,它爲那個url做了一個標準的HttpRequest。這可以是頁面(webforms)或控制器操作(MVC)。

由於它看起來像使用了webforms,因此您可以創建一個新頁面來處理此請求。如果你把一個斷點在Page_Load方法,你會看到,它被解僱時,你調用AJAX方法:

在JavaScript的右鍵點擊你可以使用jQuery的ajax方法,像這樣:

$.ajax('mypage.aspx'); 

在你mypage.aspx:

public void Page_Load(object sender, EventArgs e) 
{ 
    Response.Write("You called me!"); 
} 

你可以得到通過添加一些參數到您的通話$.ajax寫回的響應:

$.ajax('mypage.aspx', { success: function(data, textStatus, jqXHR) { 
    alert(data); 
}}); 
+0

我覺得這很接近。我目前有jsTree的Pages.aspx。我想讓它在Pages.aspx.cs中打一個函數,這可能嗎? – balexander 2011-03-01 18:52:37

+1

如果該方法由Url公開,那麼確定,否則不。我們曾經在沒有任何標記的'ajax'文件夾中創建aspx文件,並剛剛從Page_Load返回了所需的響應。這些碎片可能會根據需要被ajax擊中。 – 2011-03-01 20:01:08

0

它並不完全是你想要做的,但我認爲這可能給你一個基本的想法,即使用JQuery調用URI並做一些'databasey'* ;-)

你需要@MichaelShimmins' jQuery的Ajax代碼太(我ommitted它從我的文章)

Autocomplete jquery and SQL , ASP.NET

HTH。

* (that's not a technical term - apologies)