现要求我实现以下功能:
在一个aspx页面里,上面一排按钮,下面一个datagrid控件。要求按一按钮刷新datagrid的内容变化,但是要求上面按钮不刷新。除了将datagrid放在ifarme里面外,有没有方法用ajax实现这种功能。希望高手给除解决方案,最好贴点代码!

解决方案 »

  1.   

    ajax 为命名空间,这里的代码是在前台页面上,Default2.cs是对应的后台代码;
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="ajax.Default2" %>
    <script type="text/jscript">
        function ff()
        {
        ajax.Default2.AddTwo(22,33,getAdd);    //AddTwo的代码是在Default2.aspx.cs文件里面实现的
        }
        function getAdd(rel)
        {
        var ff=document.getElementById("dd");
        ff.innerHTML=rel.value;
        var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
        xmlDoc.async="false"
        xmlDoc.loadXML(rel.value);
        nodes=xmlDoc.getElementsByTagName("cname");
        var j=document.all.Select1.options.length;
        for( var n=0;n<j;n++)
        {
           document.all.Select1.options.remove(j);
        }  
        j=0;
         for(var i = 0; i < nodes.length; i++) 
           {
             document.all.Select1.options[j] = new Option(nodes[i].firstChild.data,i);
             j=j+1;
           }
        }
        
        </script>下面的代码是在web.config配置文件里添加的,用于注册ajax
     <httpHandlers>
        <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
     </httpHandlers>下面的是后台代码,首先加命名空间ajax,接着在page_load事件里面注册在后台处理的类Default,
    用属性[AjaxPro.AjaxMethod]声明用于在前台调用的方法
    namespace ajax
    {
        public partial class Default2 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            { 
                AjaxPro.Utility.RegisterTypeForAjax(typeof(Default2));
            }
            [AjaxPro.AjaxMethod]
            public string    AddTwo(int firstInt, int secondInt)
            {
           
              return   GetCity("server='192.168.1.25';database='hydb';uid='sa';pwd='123'","1");
            }
            public string   GetCity(string conn, string pid)
            {
                using (SqlConnection con =new  SqlConnection(conn))
                {
                    SqlCommand cmd = new SqlCommand("GetCity", con);
                    cmd.Parameters.Add("@pid", SqlDbType.VarChar, 10);
                    cmd.Parameters["@pid"].Value = pid;
                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlDataAdapter da = new SqlDataAdapter();
                    da.SelectCommand = cmd;
                    DataSet ds = new DataSet();
                    da.Fill(ds, "city");
                    string ss= ds.GetXml();
                    return ss;
                    //dd.DataSource = ds.Tables["city"].DefaultView;
                    //dd.DataBind();
                   
                }
            }
    }
    }
    当然首先要引用AjaxPro.dll文件这是我用的,你改改看看
      

  2.   

    方法二:引用MagicAjax.dll 它可以自动刷新datagrid的数据集
    1.将MagicAjax.dll Copy到BIN目录
    2.在VS.NET的ToolBox里添加该DLL3.MagicAjax的压缩包里还附有两个js的脚本文件,一个是AjaxCallObject.js,一个是WebParts.js。前者是负责MagicAjax的普通事务的客户端表现的,后者则是专门针对WebParts的脚本。将两者都Copy到你的主要存放JS的目录下。以我的solution为例,我将此二者 Copy 到 站点根目录下的 script 文件夹里存放
    4.修改Web.Config
    在web.config的<configSections></configSections>
    <section name="magicAjax"    type="MagicAjax.Configuration.MagicAjaxSectionHandler, MagicAjax"/>
    然后把datagrid放在ajaxpanel里面就可以了
      

  3.   

    然后在page_load里面设置一下刷新的时间
      

  4.   

    to: ustbwuyi()
    那按钮是用客户端事件还是服务端事件?如何改变datagrid的数据源
      

  5.   

    atlas,基本不用写代码就能实现局部刷新了~~
      

  6.   

    atlas
    用用这个,微软的新东西。
      

  7.   

    我用2003开发的,atlas支持吗
    还有MagicAjax支持吗