数据绑定代码如下:
this.DataList1.DataSource=dv;
this.DataList1.DataBind();现在问题是我要求在DataList1中只显示dv中的前n条数据,但又不改变dv中的原数据,该怎么办呀?
我曾经想到过在DataList1_ItemDataBoun事件方法中写这样的代码:private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
//<设置该项是否显示>
count++;//count是该页中定义的一个整型变量,其初始值为0
if(count>n)
{
e.Item.Visible=false;
return;
}
//</设置该项是否显示>

}但是运行结果仍然在DataList1中显示所有记录.这问题该怎么解决呀?我都已经想得头痛了,请高手帮帮我,谢谢!!!!

解决方案 »

  1.   

    补充说明:
    dv是一个DataSet中的DataView对象
      

  2.   

    static public  DataTable load_state_new(string s)    //起始页面时的数据分类处理
    {
    DataSet ds=new DataSet();
    ds.ReadXml(s);

    DataTable dt=ds.Tables[0];
    DataTable dt1=new DataTable ();
    dt1=dt.Clone();
    for (int i=dt.Rows.Count-1;i>dt.Rows .Count-6;i--)
    {
    if (i<0) 
    break ;
    else dt1.ImportRow(dt.Rows[i]);
    }
               

    return  dt1;
    }
      

  3.   

    你改成 datatable 用上边的方法.你可以更改返回的行数...
      

  4.   

    select top ,用sql top 语句
      

  5.   

    to boytomato(深爱一人叫颖的女孩!): 
        DataTable dt1=new DataTable ();
        dt1=dt.Clone();
    这样效率是不是太低了呢,我现在做的是一个网站,有几百个页面,每个页面都要用到这个数据绑定,有没有更好的方法呢?也就是说不需要再重新创建一个DataTable对象的方法呢?to sugarsupper(北欧神话):
    dv的数据来自于一个数据缓存,可以认为dv中的数据不会改变.
      

  6.   

    TO boytomato(深爱一人叫颖的女孩!):
    dv中的数据取自于数据缓存,不是数据库啊
      

  7.   

    要是缓存 你也只能用我上边给你的那种方法了.....datatable 的select()
    dataview 的RowFilter
     是无法实现 select top  语句
      

  8.   

    to boytomato(深爱一人叫颖的女孩!):我是这样实现的:int count=dv.Count;
    for(int i=count-1;i>n;i--)
    {
    dv.Delete(i);
    }this.DataList1.DataSource=dv;
    this.DataList1.DataBind();
    dv.Table.RejectChanges();//回滚dv.delete()操作谢谢你的关心!!
    大部分都给你吧!
    再次谢谢!!!