Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将DataPager与Repeater和SqlDataReader一起使用_C#_Asp.net - Fatal编程技术网

C# 将DataPager与Repeater和SqlDataReader一起使用

C# 将DataPager与Repeater和SqlDataReader一起使用,c#,asp.net,C#,Asp.net,对于中继器(如GridView),是否可以使用Next和Prev以及它们之间的页码进行自定义分页?我找到了一些东西,但它只能用10页。 我想要的是这样的,google这样的东西用于分页: < 1 2 3 4 ... 15 > 这是我的密码: public bool ListBooksByCat(DataPagerRepeater.DataPagerRepeater repeater) { List<string> selection = new List<

对于
中继器
(如
GridView
),是否可以使用NextPrev以及它们之间的页码进行自定义分页?我找到了一些东西,但它只能用10页。 我想要的是这样的,google这样的东西用于分页:

< 1 2 3 4 ... 15 >
这是我的密码:

public bool ListBooksByCat(DataPagerRepeater.DataPagerRepeater repeater)
{
    List<string> selection = new List<string>();
    Dictionary<string, object> clause = new Dictionary<string, object>();
    clause.Add("IsValid", true);
    SqlDB myDb = new SqlDB(this.Connection);

    try
    {
        SqlDataReader reader = myDb.Retrive(this.TableName, selection, clause, "bookid", true);
        repeater.DataSource = reader;
        repeater.DataBind();
        reader.Close();
        return true;
    }
    catch (Exception e)
    {
        //logging errors
        return false;
    }
}
public bool ListBooksByCat(DataPagerRepeater.DataPagerRepeater中继器)
{
列表选择=新列表();
字典子句=新字典();
添加(“有效”,真实);
SqlDB myDb=newsqldb(this.Connection);
尝试
{
SqlDataReader=myDb.retrve(this.TableName,selection,子句,“bookid”,true);
repeater.DataSource=读取器;
repeater.DataBind();
reader.Close();
返回true;
}
捕获(例外e)
{
//记录错误
返回false;
}
}

注意
:DataPagerRepeater.DataPagerRepeater内置于链接文章中

不应绑定到SqlReader,而应将控件绑定到DataTable或其他使数据脱机的集合(DataReader在绑定期间始终保持连接模式)。出现此错误是因为SqlDataReader是资源相关对象,任何资源相关对象都无法“传递”到客户端。

我将SqlDataReader复制到
数据表
中,然后将中继器绑定到它:

    SqlDataReader reader = myDb.Retrive(this.TableName, selection, clause, "bookid", true);
    DataTable dt = new DataTable();
    dt.Load(reader);
    reader.Close();
    repeater.DataSource = dt;
    repeater.DataBind();
    SqlDataReader reader = myDb.Retrive(this.TableName, selection, clause, "bookid", true);
    DataTable dt = new DataTable();
    dt.Load(reader);
    reader.Close();
    repeater.DataSource = dt;
    repeater.DataBind();