http://time-is-life.cnblogs.com/articles/329656.html

解决方案 »

  1.   

    一般这种问题和你的pageload事件里面的ispostback有关,你单步调试下相关代码
      

  2.   

    在PageLoad事件中的绑定事件
    if(!IsPostBack)
    {
    .....
    }
      

  3.   

    你点确定按钮首先应执行Page_Load的事件,这时数据还没更新,然后执行按钮事件添加记录,但添加后页面没刷新,所以显示的还是老数据
      

  4.   

    你点确定按钮首先应执行Page_Load的事件,这时数据还没更新,然后执行按钮事件添加记录,但添加后页面没刷新,所以显示的还是老数据
    ---------------------------------------
    可是我在按钮点击事件中又添加了重新绑定的代码
    这样处理对于DataGrid是好用的,但是Repeater就是不行
    我想让按钮点击以后就显示出最新的数据,而不是延迟一次,我想这是谁也不想看到的
      

  5.   

    repeater.DataSource=ds;
    repeater.DataBind();
      

  6.   

    让人吃惊的新进展在两处
       this.rptComments.DataSource = dsComments;
    上都加了端点,然后进行调试,结果竟然正常了,也就是说能够马上显示出来了,难道是因为在插入数据后马上读取就读取不到最新的数据,怎么会这样那?我用的是Access数据库,插入一条数据就这样慢?那么该怎么样进行处理那?
      

  7.   

    我觉得一般都是这样来坐
    pageload()
    『』
      

  8.   

    pageload
    {
       if(!IsPostBack)
    {
        datagridbind();
    }
    }buttonclick()
    {
       insert();
       datagridbind();
    }
    这样就可以了,和速度慢不慢没关系
      

  9.   

    datagridbind()

      执行sql语句查询数据库得到数据集于repeater绑定 
      

  10.   

    to 楼上,我就是这么干的,可是还是不行
    你具体再看看
    http://time-is-life.cnblogs.com/articles/329656.html
    是不是微软的bug?
      

  11.   

    这个问题很普遍哦。
    要考虑一下.net的线程先后问题。不过一般把绑定放在按钮处理的最后一步而不放在页面开头,基本上不会出现这样的问题
      

  12.   

    >这样你重新建立个程序,在那里面弄个类似的程序来检验一下是否还会出现这样的问题
    我新建了一个应用程序,效果还是一样
    >这个问题很普遍哦。
    >要考虑一下.net的线程先后问题。
    >
    >不过一般把绑定放在按钮处理的最后一步而不放在页面开头,基本上不会出现这样的问题我的按钮处理事件是这样的: string username = this.txtUserName.Text;
    string ip = this.Page.Request.UserHostAddress;
    string posttime = DateTime.Now.ToString();
    string content = this.txtContent.Text; //插入数据库
    ESolution_ProxyServerBBS_DataAccess esolution_proxyserverbbs_dataaccess = new ESolution_ProxyServerBBS_DataAccess();
    esolution_proxyserverbbs_dataaccess.AppendProxyServerBBS( username , content , posttime , ip ); if( Page.IsPostBack )
    {
    //因为btnSubmit函数的执行在Page_Load之后,所以需要重新绑定Repearter才能显示最新的数据
    DataSet dsComments = new DataSet();
    dsComments = esolution_proxyserverbbs_dataaccess.GetProxyServerBbsByNum( 3 );
    this.rptComments.DataSource = dsComments;
    this.rptComments.DataBind();
    }这样也是把绑定语句放在按钮处理事件的最后了吧,可是怎么还是不行那?
    而且在那个链接中我也说了,我让线程停滞1秒,还是不行
    到底怎么回事哪?
      

  13.   

    参考这样,修改一下试试
    page_load
    {
       if(!Page.IsPostBack ) //Page.IsPostBack 应是
    {
        databind();
    }
    }
    databind()
    {
      DataSet dsComments = new DataSet();
    dsComments = esolution_proxyserverbbs_dataaccess.GetProxyServerBbsByNum( 3 );
    this.rptComments.DataSource = dsComments;
    this.rptComments.DataBind();}buttonclick()
    {
       insert();
       databind();
    }
      

  14.   

    看了你的地址,如果真如你所说,考虑一下,是否为缓存问题?
    你的
    ESolution_ProxyServerBBS_DataAccess esolution_proxyserverbbs_dataaccess = new ESolution_ProxyServerBBS_DataAccess();
    esolution_proxyserverbbs_dataaccess.AppendProxyServerBBS( username , content , posttime , ip );
    是什么??webservice??
      

  15.   

    >看了你的地址,如果真如你所说,考虑一下,是否为缓存问题?
    >你的
    >ESolution_ProxyServerBBS_DataAccess esolution_proxyserverbbs_dataaccess = new >ESolution_ProxyServerBBS_DataAccess();
    >esolution_proxyserverbbs_dataaccess.AppendProxyServerBBS( username , content , >posttime , ip );
    >是什么??
    >
    >webservice??
    ESolution_ProxyServerBBS_DataAccess是数据层的一个类,也就是调用一个dll中的方法
    不应该是缓存的问题,因为总是延迟一次,而不是多次
    另外在调试状态下就不会延迟
      

  16.   

    1. ESolution_ProxyServerBBS_DataAccess是数据层的一个类
    2. 不应该是缓存的问题,因为总是延迟一次,而不是多次,另外在调试状态下就不会延
      

  17.   

    to huangkc(软贱&henchman) :试验了一下你的方法,结果还是不行
      

  18.   

    你先跳过这个方法试试,直接在asp.net里更新数据库,看有没有延时?
      

  19.   

    to hdt(倦怠):
    首先谢谢你的指教
     
    >你先跳过这个方法试试,直接在asp.net里更新数据库,看有没有延时?我试验了更新数据库,和插入数据库一样,也是延迟一次
      

  20.   

    1. 察看数据库发现记录已经更新
       但是页面上没有更新
    2. 我在Page_Load中加了:     this.Page.Response.Buffer = false;
         this.Page.Response.Cache.SetNoStore();
        用来清除缓存
        程序运行结果还是一样,看来不是缓存的问题
      

  21.   


    让人吃惊的新进展在两处
       this.rptComments.DataSource = dsComments;
    上都加了端点,然后进行调试,结果竟然正常了,也就是说能够马上显示出来了,难道是因为在插入数据后马上读取就读取不到最新的数据,怎么会这样那?我用的是Access数据库,插入一条数据就这样慢?那么该怎么样进行处理那?
    ======
    这个问题我遇到过,原因是两次绑定的时候,上一次的数据连结没有关闭。
    也就是你的Insert之后没有立即关闭连结。(关闭连结的代码在DataAdapter.Fill之前)
    楼主请仔细检查。
      

  22.   

    另外还有不明白的地方就是为什么在调试的时候如果在插入和读取之间加上断点就能及时显示数据,而在运行的时候就要延迟一次。ADO.net到底在下面搞了什么东东?
      

  23.   

    是这样的
    你的连接或查询Time与你保存Time冲突,即是同时
    你在调试过程中有了停顿
    所以才不会出现这个问题
    有时改一下查询条件或许就可以了