日期:2014-05-17  浏览次数:20408 次

AspnetPager结合动态创建的GridView的问题
我创建一个用户控件ascx,在该用户控件中动态创建了GridView,而且用AspNetPager实现了分页

现在碰到一个问题,就是在 aspx中注册该用户控件后,并在页面上新加一个查询按钮,目的是查询数据库

并将信息保存到Gv中,但当我点击该按钮后(按钮事件是空的,没做任何事)

GV反而没有分页效果了??

所有记录都显示在一页中,而且列也不对了

我跟踪了下代码,定位到问题所在,即首次运行时,触发了AspNetPager1_PageChanging事件,

此时页面有分页效果,Gv中显示的列也是正常的,数据也对

但当点击按钮后,却不触发AspNetPager1_PageChanging事件,因为不触发该事件,所以没有分页效果,

我现在想请教下大家当点击按钮进行查询时,如何触发该事件,让GV还是能够分页,或是如何让在点击按钮时能够

使得页面有分页效果???

代码如下:
ascx中
HTML 我采用的URL分页,我看了一下这方面资料,AspNetPager1_PageChanging好像只在第一次加载触发啊???
HTML code

<webdiyer:AspNetPager ID="AspNetPager1" runat="server" 
        PagingButtonSpacing="8px" showcustominfosection="Right" 
        CustomInfoHTML="总记录数:%RecordCount%,总页数:%PageCount%,当前为第%CurrentPageIndex%页" 
        urlpaging="True" width="100%" LayoutType="Table" 
        ShowNavigationToolTip="true" UrlPageIndexName="pageindex"
        onpagechanged="AspNetPager1_PageChanged" 
        onpagechanging="AspNetPager1_PageChanging" PageSize="15">
    </webdiyer:AspNetPager>



ascx.cs代码
C# code

protected void Page_Load(object sender, EventArgs e)
{
}

public void BindGridView()
{

//关键代码段
PagedDataSource pds = new PagedDataSource();
        pds.AllowPaging = true;
        pds.DataSource = _DataSet.Tables[0].DefaultView;
        AspNetPager1.RecordCount = pds.DataSourceCount;
        AspNetPager1.AlwaysShow = true;
        pds.PageSize = AspNetPager1.PageSize;
        pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
        _GridView.DataSource = pds;
        _GridView.DataBind();
}

protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
    {
        AspNetPager1.CurrentPageIndex = e.NewPageIndex;
        BindGridView();
    }



aspx.cs中
C# code

protected void Page_Load(object sender, EventArgs e)
    {
            GvTemplet.BindGridView();
    }

//点击该按钮,GV无刷新效果
protected void BtnOneQuery_Click(object sender, EventArgs e)
    {
    }



------解决方案--------------------
在用户控件中设置属性,在调用用户控件的页面设置控件的属性,再调用方法重新绑定数据到gridview