我用AjaxPro,后台代码
[AjaxPro.AjaxMethod]
private string ShowData()
{
string sql="select * from "+TableName+(sefileid!=0?" where SEFile_ID="+sefileid:""); DataTable dt=db.OpenTable(sql);
dgData.DataSource=dt;
dgData.DataBind(); System.Text.StringBuilder sb=new System.Text.StringBuilder();
System.IO.StringWriter sw=new System.IO.StringWriter(sb);
System.Web.UI.HtmlTextWriter htw=new HtmlTextWriter(sw); dgData.RenderControl(htw);
string s=sb.ToString();
return s;前台代码
function Call_Show()
{
var cc=document.getElementById("dgData");
cc.innerHTML=SEFile.ShowData().value;
}
function Call_Server()
{
SEFile_ShowData();
Call_Show();
}我怎么定时刷新DataGrid??
我用window.onload=setInterval("Call_Server()",1000);setTimtOut都不行  提示网页有错误??该怎么解决

解决方案 »

  1.   

    [AjaxPro.AjaxMethod]private string ShowData() 这里要用public?具体的脚本错误是什么?
      

  2.   

    不用那么麻烦,前台放一个隐藏的linkbutton:如LinkBut
    js:
    <script>
    function beginrefresh()
    {
    __doPostBack('LinkBut','s');
    }
    setTimeout("beginrefresh()",1000) 
    </script>cs:
    private void LinkBut_Click(object sender, System.EventArgs e)
    {
    if(Request["__EVENTARGUMENT" ]=="s") 
    {

     
    this.Data();
    //Page.RegisterStartupScript("alert", "<script>window.alert('fsd')</script>");


    }
      

  3.   

    setInterval("alert('我是Interval, 每5秒一次')",5000);   就是 5秒执行依次 
    setInterval("Call_Server()",1000);就不行我在刷新时执行了Call_Server(),但DataGrid的数据还没变  现在没实际体现出ajax的好,最近在看ajax实战.看这本书不错."站在巨人的肩膀上"
      

  4.   

    zhaozhao110(我死了,在烈火中我又站起来了,你猜是涅盘,还是尸变)
    不明白
      

  5.   

    tianzhi21(花无第二阶段)什么意思
    nowkok(第一桶金很难)
    我该成public  还不行   再不行  我要放弃了
      

  6.   

    SEFile_ShowData(); 错了  我改成SEFile.ShowData();
    怎么提示未定义
      

  7.   

    我也是看ajax实战,看完后有段时间没用ajaxpro了,你的前台代码cc.innerHTML=SEFile.ShowData().value;我记得ajaxpro不是这样掉用吧,SEFile.ShowData(Call_Show_callback);然后再写一个Call_Show_callback(res){cc.innerHTML=res.value;},还有,以前用的时候听人说ajaxpro中类似于cc.innerHTML=SEFile.ShowData()这样的调用不是真正的异步,听说而已。提示未定义你是否注册了SEFile,同时好像在2003中要写成 你的项目名.SEFile.ShowData   ,说错务怪啊
      

  8.   

    楼上的说法我试了  
    function showData_callback(response)
    {
    var cc=document.getElementById("dgData");
    cc.innerHTML=response.value;
    }
    function Call_Server()
    {
    SE.BasicSettings.SEFile.ShowData(showData_callback);
       //se我的项目名 BasicSettings文件夹 SEFile是页面    ShowData 方法 }
    window.onload=window.setInterval("Call_Server()",1000);后台是这样写的
    AjaxPro.Utility.RegisterTypeForAjax(typeof(SEFile));提示SE未定义  
      

  9.   

    (你的项目名.SEFile.ShowData) 看看你的那个方法,从项目最顶层的命名空间开始引用
      

  10.   

    我不加setTimeout(Call_server(),1000);这句话,就没有错误;但是我加上这句,就提示se未定义.郁闷
      

  11.   

    我又做了个例子,还是不行.我添加ajaxpro的步骤:
    1.添加ajaxpro.dll,这不会错吧.
    2.在web.config中配置如下:
      <httpHandlers>
    <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro"/>
      </httpHandlers>
    3.在页面写ajax服务器方法
    [AjaxPro.AjaxMethod]
    public string ShowData()
    {
    string sql="select * from client";
    DataSet ds=db.OpenDataSet(sql);

    dgData.DataSource=ds;
    dgData.DataBind(); System.Text.StringBuilder sb=new System.Text.StringBuilder();
    System.IO.StringWriter sw=new System.IO.StringWriter(sb);
    System.Web.UI.HtmlTextWriter htw=new HtmlTextWriter(sw); dgData.RenderControl(htw);
    string s=sb.ToString();
    return s;
    }
    在Page_Load中写
    AjaxPro.Utility.RegisterTypeForAjax(typeof(LX01));前台JS:function showData_callback(response)
    {
    var cc=document.getElementById("dgData");
    cc.innerHTML=response.value;
    }
    function call_server()
    {
    example4._0115.LX01.ShowData(showData_callback);
    }//example是我的项目名,0115是文件夹,ShowData是Ajax服务器方法
    怎么还提示example4未定义呢?
      

  12.   

    关注------------------------
    http://fenglin.xland.cn
    ------------------------
      

  13.   

    类代码: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;namespace MyAJAX
    {
        /// <summary>
        /// 
        /// </summary>
        public partial class Test : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                AjaxPro.Utility.RegisterTypeForAjax(typeof(MyAJAX.Test));
            }        [AjaxPro.AjaxMethod()]
            public void GetSubCategory(int iCategoryID)
            {
                Random rand = new Random();
                SqlConnection conn = null;            try
                {
                    conn = new SqlConnection("Data Source=(local); User ID=sa;Password=hztsa; Initial Catalog=test");
                    conn.Open();
                    SqlCommand cmd = conn.CreateCommand();
                    cmd.CommandText = string.Format("Update Video Set DownLoadCount = DownLoadCount + 1");
                    cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                   string str = ex.Message;
                }
                finally
                {
                    if (conn != null && conn.State != ConnectionState.Closed)
                    {
                        conn.Close();
                    }
                }            string[] testStr = new string[10000];
                for (int i = 0; i < testStr.Length; i++)
                {
                    testStr[i] = "fdd";
                }          // System.Threading.Thread.Sleep(500 + rand.Next(1000));        }
        }
    }
    页面:
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="MyAJAX.Test" %><!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>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
    <a href="#" onclick="javascript:AddDownLoad();">下载</a>
        </form>
        <script>
    function AddDownLoad() {
    // 方法GetSubCategory是在后台中被声明为AjaxMethod()的方法.
    // 在方法GetSubCategory所有的参数后面,再多加上一个方法名GetSubCategory_backcall做参数,
    // 如果方法GetSubCategory有返回值,它的返回值将被赋给方法GetSubCategory_backcall的第一个参数
    MyAJAX.Test.GetSubCategory(5,GetSubCategory_backcall);
    }

    // 此方法的名称是任意的,参数的个数和名称也是任意的,但AJAX方法的
    // 返回值只会被赋给第一个参数
    function GetSubCategory_backcall(response)
    {
    var dt = response.value;
    alert(dt);
    }
    </script>
    </body>
    </html>
      

  14.   

    web.Config文件:<?xml version="1.0"?>
    <!-- 
        メモ: このファイルを手動で編集する代わりに、Web 管理ツールを使用 
        してアプリケーションの設定を構成することができます。Visual Studio 
        の [Web サイト] メニューにある [ASP.NET 構成] オプションから設定
        を行ってください。設定およびコマンドの一覧は、通常
        \Windows\Microsoft.Net\Framework\v2.x\Config にある
        machine.config.comments で確認できます。
    -->
    <configuration>
      <appSettings>
        <add key="connectionStr" value="Provider=SQLOLEDB.1; Data Source=localhost; User ID=sa;Password=hztsa; Initial Catalog=test"/>
      </appSettings>
    <connectionStrings/>
    <system.web>
    <!-- 
                デバッグ シンボルをコンパイルされたページに挿入するに
                は、compilation debug="true" に設定します。この設
                定はパフォーマンスに影響するため、開発時のみこの値
                を true に設定してください。
            -->
    <compilation debug="true"/>
    <!--
                <authentication> セクションは、ユーザーを識別するため
                に、ASP.NET で使用されるセキュリティ認証モードの構成
                を有効にします。
    -->
    <authentication mode="Windows"/>
    <!--
                <customErrors> セクションは、要求の実行中にハンドル
                されていないエラーが発生した場合の処理方法の構成を
                有効にします。具体的には、開発者が HTML エラー ペ
                ージをスタック トレースのエラーの代わりに表示するように構
                成することを可能にします。        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="NoAccess.htm" />
                <error statusCode="404" redirect="FileNotFound.htm" />
            </customErrors>
            -->
        <httpHandlers>      <!-- 声明此节点才能使用AJAX -->
          <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>    </httpHandlers>  </system.web>
    </configuration>
      

  15.   

    以上用的就是AjaxPro,在XP和windows2003都作了测试,你自己建立个数据库试一下吧
      

  16.   

    使用AjaxPro原因:使用JS能定时时执行AjaxPro写js函数了,目的改变DataGrid中的数据.但结果不能刷新页面。
    而且会提示“未知的运行错误”,当<head runat=server>时,没那个错误,但是当你进行数据修改后还会提示“未知的运行错误”,而且DataGrid也不会刷新。看来AjaxPro并没有达到我想要的效果!