问题一、我想把限制DataList读出来的数据,比如我数据库中有10条记录,但是我现在只需在datalist中显示5条,我不用sqlserver来控制,请问我应该怎么做呢?问题二、如果上面的情况我用sqlserver的语句来控制的话:select top 5 from users ,目前的问题是,我想让'top 5'成为一种变量,能在代码中控制,写成:select top @num from users,可是这种办法行不通,请问各位高手,怎么做?

解决方案 »

  1.   

    用between,如果id是连续的用between最好,select top @num from users where id between 1 and 5
      

  2.   

    问题一:用下面类示的代码就行了。即控制数据集显示的行数dlMember.DataSource=ds;
    dlMember.DataBind();
    DataView dv = ds.Tables["grade"].DefaultView;
    for(int g=0;g<5;g++)
    {
    string str = dv.Table.Rows[g]["newgrade"].ToString();

    cbl = (CheckBoxList)dlMember.Items[g].FindControl("cblGrade");
    }问题二:用变量完全可以!!
      

  3.   

    sqldata.Fill (ds,start,size,"table");
    ds ,返回dataset
    start  起始行.
    size 起始后的多少行.
    table 表名
    你可以查一下msdn 用这种办法你可以取行,从任意行开始后的多少行..返回到dataset中.然后调用...
      

  4.   

    1、楼上
    2、
    CREATE PROCEDURE SelTop
    (
    @Num char(2)

    AS
    exec('select top '+@Num+' * from table1 order by ID desc')
    GO
      

  5.   

    请问楼上,问一个您不要笑话的问题,exec('select top '+@Num+' * from table1 order by ID desc')中的exec是什么意思,为什么我写直接写select top '+@Num+' * from table1 order by ID 就会出错呢?
      

  6.   

    exec:
    EXECUTE
    执行标量值的用户定义函数、系统过程、用户定义存储过程或扩展存储过程
    也可以用rowcount:
    CREATE PROCEDURE SelTop(@Num int) 
    AS
    SET ROWCOUNT @Num
    SELECT * FROM Users 
    SET ROWCOUNT 0
    GO