2011-02-28 99 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)