我用的是AjaxPro.2.dll,然后我想点击那个 “无刷新更新” 那个按钮,要实现 无刷新 修改表中的内容,可是却实现不了,大家帮帮看看啊,如果  public bool gengxin() 方法里面只写上 return true,就能弹出 更新成功,说明我配置没有错啊,但是他就是不执行我的SQL语句,为啥??是不是可以帮我解决一下,或者给我一个简单的例子看看啊,我自己找了很多资料,仍然不行拜托了,分不多,只能发自肺腑说声  非常感谢!<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
    <script type="text/javascript">
    function gx()
    {
       Default2.gengxin(callback);
     }
       
     function callback(res)
   {
       if(res.value==true)
       { 
          alert('更新成功');
       }
    }
    </script></head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
        <br />
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
        <br />
        <asp:TextBox ID="TextBox3" runat="server" OnTextChanged="TextBox3_TextChanged"></asp:TextBox><br />
        <br />
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="普通更新" /><br />
        <br />
        &nbsp;<input id="Button2" type="button" value="无刷新更新"  onclick="return gx()"/></div>
    </form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;using System.Data.SqlClient;using AjaxPro;public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        AjaxPro.Utility.RegisterTypeForAjax(typeof(Default2));
    }
    [AjaxPro.AjaxMethod]
    public bool gengxin()
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["testConn"].ConnectionString);
        conn.Open();
        SqlCommand cmd = new SqlCommand("Proc_UpdateTest", conn);
        cmd.CommandType = CommandType.StoredProcedure;        SqlParameter[] param = new SqlParameter[3];        param[0] = new SqlParameter("@user", SqlDbType.NChar, 10);
        param[0].Value = TextBox1.Text;
        param[1] = new SqlParameter("@paper", SqlDbType.NChar, 10);
        param[1].Value = TextBox2.Text;
        param[2] = new SqlParameter("@score", SqlDbType.NChar, 10);
        param[2].Value = TextBox3.Text;
        foreach (SqlParameter Parameter in param)
            cmd.Parameters.Add(Parameter);
        cmd.ExecuteNonQuery();
        //SqlCommand cmd = new SqlCommand("update Paper set paper='" + TextBox2.Text + "',score='" + TextBox3.Text+"' where user='" + TextBox1.Text + "'",conn);
        //cmd.ExecuteNonQuery();
      
        conn.Close();
        return true;
    }    protected void Button1_Click(object sender, EventArgs e)
    {
        gengxin();
    }
    protected void TextBox3_TextChanged(object sender, EventArgs e)
    {    }
}

解决方案 »

  1.   

    ajaxPro在后台取不到控件的值,要在js里取然后传给后台方法
      

  2.   


    楼上说的对,
    你 param[0].Value = TextBox1.Text;这样取值不对,因为这是后是前台客户端按钮通过js传递值到后台处理,页面没有PostBack,所以通过TextBox.Text是取不到值的.
    不信你可以直接给3个param赋值(如:param[0].Value ="zhangsan";)看看!
      

  3.   

    谢谢两位,终于知道了,哎!这么简单的一个问题困扰了我好几天!
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
        <script type="text/javascript">
        function gx()
        {
           var u=document.getElementById("TextBox1").value;
           var p=document.getElementById("TextBox2").value;
           var s=document.getElementById("TextBox3").value;
           Default2.gengxin(u,p,s,callback);
         }
           
         function callback(res)
       {
           if(res.value==true)
           { 
              alert('更新成功');
           }
        }
        </script></head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
            <br />
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
            <br />
            <asp:TextBox ID="TextBox3" runat="server" OnTextChanged="TextBox3_TextChanged"></asp:TextBox><br />
            <br />
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="普通更新" /><br />
            <br />
            
            &nbsp;<input id="Button2" type="button" value="无刷新更新"  onclick="return gx()"/></div>
        </form>
    </body>
    </html>
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;using System.Data.SqlClient;using AjaxPro;public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            AjaxPro.Utility.RegisterTypeForAjax(typeof(Default2));
        }
        [AjaxPro.AjaxMethod]
        public bool gengxin(string u,string p,string s)
        {        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["testConn"].ConnectionString);
            conn.Open();
            SqlCommand cmd = new SqlCommand("Proc_UpdateTest", conn);
            cmd.CommandType = CommandType.StoredProcedure;        SqlParameter[] param = new SqlParameter[3];        param[0] = new SqlParameter("@user", SqlDbType.NChar, 10);
            param[0].Value = u;
            param[1] = new SqlParameter("@paper", SqlDbType.NChar, 10);
            param[1].Value = p;
            param[2] = new SqlParameter("@score", SqlDbType.NChar, 10);
            param[2].Value = s;
            foreach (SqlParameter Parameter in param)
                cmd.Parameters.Add(Parameter);
            cmd.ExecuteNonQuery();
            //SqlCommand cmd = new SqlCommand("update Paper set paper='" +p + "',score='" + s+"' where user='" +u + "'",conn);
            //cmd.ExecuteNonQuery();
          
            conn.Close();
            return true;
        }    protected void Button1_Click(object sender, EventArgs e)
        {
            gengxin(TextBox1.Text,TextBox2.Text,TextBox3.Text);
        }
        protected void TextBox3_TextChanged(object sender, EventArgs e)
        {
        }
    }