protected void Page_Load(object sender, EventArgs e)
 {
      
     if (!IsPostBack)
     {
   
        DataList1.DataSource = CreateDataSet();
        DataList1.DataBind();
 
        Repeater1.DataSource = CreateRepeaterData();
        Repeater1.DataBind();
     }
}
当Web页刚创建时,DataList和Repeater中的数据都正常显示,但是当点击Web页中的其他控件后,
Repeater在Web页中消失了。这怎么解决呀?

解决方案 »

  1.   

    Repeater 是动态生成的吗??/
      

  2.   

    if( !IsPostBack )造成的
      

  3.   

    if(!IsPostBack )不是指只在第一次加载时才创建数据源吗?
    没有这句回发时不会重复生成数据吗?
      

  4.   

    protected void Page_Load(object sender, EventArgs e)
     {
          
         if (!IsPostBack)
         {
       
            DataList1.DataSource = CreateDataSet();
            DataList1.DataBind();
     
            Repeater1.DataSource = CreateRepeaterData();
            Repeater1.DataBind();
         }
         else
        {
            Repeater1.DataBind();
        }
    }改为这样也不行,还有DataList没有处理回发为什么没有消失呢?
      

  5.   

    你点击其他控件后也要再次绑定
    DataList1.DataSource = CreateDataSet();
            DataList1.DataBind();
     
            Repeater1.DataSource = CreateRepeaterData();
            Repeater1.DataBind();
      

  6.   

    是去掉了页面的viewstate吧,不然会不用重新绑定的,除非你在点击Web页中的其他控件后重新绑定了空数据给Repeater1
      

  7.   

    if (!IsPostBack)
         {
       
            DataList1.DataSource = CreateDataSet();
            DataList1.DataBind();
     
            Repeater1.DataSource = CreateRepeaterData();
            Repeater1.DataBind();
         }
         else
        {
            DataList1.DataSource = CreateDataSet();
            DataList1.DataBind();
     
            Repeater1.DataSource = CreateRepeaterData();
            Repeater1.DataBind();
        }
    是这样吗?还是不行啊!
      

  8.   

    是去掉了页面的viewstate吧,不然会不用重新绑定的,除非你在点击Web页中的其他控件后重新绑定了空数据给Repeater1
    -------------------------------------
    去掉了页面的viewstate吧? 这句话是什么意思?
    除非你在点击Web页中的其他控件后重新绑定了空数据给Repeater1点击其他控件的操作与Repeater1无关,不可能重新绑定了。
      

  9.   

    viewstate是保存状态了,如果去掉了,就不能保存Repeater1的状态,所以你postback回服务器后没重新加载数据进行绑定的话,Repeater1中的数据就会消失。
      

  10.   

    BearRui(孤熊 | 带你去看海!) 你的意思是让我使用viewstate来保存Repeater1吗?
    可是怎么保存?
      

  11.   

    我新学Web编程,请大家多帮忙。
      

  12.   

    viewstate默认是保存的,看下你是否设置了PAGE的EnableViewState="false"
      

  13.   

    我从来没动过EnableViewState。把if (!IsPostBack)去掉问题解决,可是为什么会这样??
    不是应该在页面首次加载时才创建数据吗??
      

  14.   

    把if (!IsPostBack)去掉
    --------------------------
    这样的话你每次postback回服务器都要重新加载数据。你检查下你的aspx文件的第一行,看看<%@ Page language="c#" Codebehind="Default.aspx.cs" EnableViewState="false"  EnableEventValidation="false" Inherits="MyeGlobal.Web._Default"  %>显示的设置下EnableViewState="true" 看下行不行。
      

  15.   

    我显示设置EnableViewState="true"还是不行。
    我感觉问题出在Repeater1这个控件上,DataList1就没事。
      

  16.   

    将Repeater的EnableViewState设置为true
      

  17.   

    Repeater的EnableViewState已经设置为true。
      

  18.   

    到底应该怎么办啊?
    if (!IsPostBack)这句加还是不加?
    加了问题解决,可是又重复创建数据!
    哪位知道问题的原因,就请帮忙仔细分析一下吧!
    分可以再加。
      

  19.   

    当Web页刚创建时,DataList和Repeater中的数据都正常显示,但是当点击Web页中的其他控件后,Repeater在Web页中消失了。这怎么解决呀?
    Repeater在Web页中消失了,但DataList的数据没有消失,说明不是ViewState的问题。
    估计是Repeater里面的数据没有“放入”ViewState的原因。protected void Page_Load(object sender, EventArgs e)
     {
          
         if (!IsPostBack)
         {
       
            DataList1.DataSource = CreateDataSet();
            DataList1.DataBind();
         }
            Repeater1.DataSource = CreateRepeaterData();
            Repeater1.DataBind();
    }
      

  20.   

    说了,估计是Repeater里面的数据没有“放入”ViewState的原因。也就是说,客户端的关于Repeater里面的数据没有提交到服务器端。所以不行。
      

  21.   

    我只是想知道这是什么原因造成的。
    Repeater里面的数据为什么没有放入ViewState。
      

  22.   

    贴你的web.config或者machine.config,肯定是EnableViewState设置为false了
      

  23.   

    我仔细看了一下web.config和machine.config,没有设置EnableViewState。
      

  24.   

    CreateRepeaterData();
    看看你的代码