2

datapager を使用してカスタム ページングを実装する方法を教えてください。これで、2 つのボタン (次のページと前のページ用) と LoadListview() メソッドでこれを行うことができましたが、このメソッドを datapager で使用したいと考えています。助言がありますか?

コード ビハインド ファイル:

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BusinessConnectionString"].ToString());
    SqlDataAdapter adap;
    int startIndex;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            LoadListview();
        }         
    }

    private void LoadListview()
    {
        string FindWhat = Request.QueryString["Find"];
        string FindWhere = Request.QueryString["Where"];
        string TownName = FindWhere;
        string CountyName = FindWhere;
        string PostcodeName = FindWhere;

        //startIndex = int.Parse(ViewState["index"].ToString());
        startIndex = MyDataPager.StartRowIndex * MyDataPager.PageSize;
        int endIndex = startIndex + MyDataPager.PageSize;

        adap = new SqlDataAdapter("SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY id_Business) AS MyRow, id_Business, Name, TownName FROM UbeloView WHERE (Name Like '%" + FindWhat + "%' AND TownName Like '%" + TownName + "%') UNION ALL SELECT ROW_NUMBER() OVER (ORDER BY id_Business) AS MyRow, id_Business, Name, TownName FROM UbeloView WHERE (Name Like '%" + FindWhat + "%' AND CountyName Like '%" + CountyName + "%') UNION ALL SELECT ROW_NUMBER() OVER (ORDER BY id_Business) AS MyRow, id_Business, Name, TownName FROM UbeloView WHERE (Name Like '%" + FindWhat + "%' AND PostcodeName Like '%" + PostcodeName + "%')) AS log WHERE MyRow >=" + startIndex + " AND MyRow <=" + endIndex + " ", conn);

        DataSet ds = new DataSet();


        adap.Fill(ds);

        lstBusiness.DataSource = ds;
        lstBusiness.DataBind();
    }

    protected void MyDataPager_PreRender(object sender, EventArgs e)
    {
        LoadListview();
    }
4

1 に答える 1

0

この記事が役に立ちます: http://www.codeproject.com/Articles/24065/Paging-ListView-With-DataPager

この記事では、作成者は を使用しDataPager_PreRenderてデータを ListView にバインドしました。

protected void DataPagerProducts_PreRender(object sender, EventArgs e)
{
    ProductList db = new ProductList();
    this.ListViewProducts.DataSource = db.GellAll();
    this.ListViewProducts.DataBind();
}

同様のことを試すことができます:

protected void MyDataPager_PreRender(object sender, EventArgs e)
{
    LoadListview();    
}

LoadListview()あとは、DataPager コントロール自体から開始インデックスを取得するようにメソッドを変更するだけです。

private void LoadListview()
    {
        string FindWhat = Request.QueryString["Find"];
        string FindWhere = Request.QueryString["Where"];
        string TownName = FindWhere;
        string CountyName = FindWhere;
        string PostcodeName = FindWhere;

        startIndex = MyDataPager.StartRowIndex * MyDataPager.PageSize;
        adap = new SqlDataAdapter("<Query removed to save space>", conn);

        DataSet ds = new DataSet();    

        adap.Fill(ds);

        lstBusiness.DataSource = ds;
        lstBusiness.DataBind();
    }

ご覧のとおりstartIndex、行インデックスを取得し、それを DataPager のページ サイズで乗算して取得しています。startIndex * 80これで、SQL クエリのこの部分を からに変更できますstartIndex

btnPreviousすべてが計画どおりに進めば、イベントとbtnNextクリック イベントは不要になります。

これにより、あなたが達成しようとしていることについての洞察が得られることを願っています。

于 2012-04-13T13:25:52.047 に答える