关于AspNetPager分页控件问题!
兄弟我最近刚开始使用AspNetPager分页控件,不了解之处还请多指教!
老规矩贴下代码:
--前台代码
<div>
<asp:DropDownList ID="ddlProductCategory1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlProductCategory1_SelectedIndexChanged">
</asp:DropDownList><br />
<asp:GridView ID="grvProductCategory" runat="server"
AutoGenerateColumns="False" OnRowDeleting="grvProductCategory_RowDeleting">
<Columns>
<asp:TemplateField HeaderText="产品类别">
<ItemTemplate>
<asp:Label ID="Label1" runat="server"><%#Eval("name")%></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
<webdiyer:AspNetPager ID="AspNetPager1" runat="server" PageSize="10"
onpagechanging="AspNetPager1_PageChanging" AlwaysShow="True" FirstPageText="首页" LastPageText="尾页" NumericButtonTextFormatString="[{0}]" ShowInputBox="Never" CssClass="paginator" CurrentPageButtonClass="cpb" Font-Size="12px" NextPageText="下一页" PrevPageText="上一页" ShowBoxThreshold="11" TextAfterInputBox="" TextBeforeInputBox="" UrlPaging="true" >
</webdiyer:AspNetPager>
--后台代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindDdlProductCategory1();
BindGridView(1, Convert.ToInt32(ddlProductCategory1.SelectedValue));
}
}
private void BindDdlProductCategory1()
{
SqlConnection cn = Connection.ConnectionObject;
SqlCommand cmd = Connection.CommandObject;
cmd.CommandText = "select id,name from ProductCategory1";
cmd.Connection = cn;
cn.Open();
ddlProductCategory1.DataSource = cmd.ExecuteReader();
ddlProductCategory1.DataTextField = "name";
ddlProductCategory1.DataValueField = "id";
ddlProductCategory1.DataBind();
cn.Close();
}
protected void ddlProductCategory1_SelectedIndexChanged(object sender, EventArgs e)
{
BindGridView(1, Convert.ToInt32(ddlProductCategory1.SelectedValue));
}
private void BindGridView(int index,int category)
{
SqlConnection cn = Connection.ConnectionObject;
SqlCommand cmd = Connection.CommandObject;
cmd.CommandText = "select TOP 10 id,name,did from ProductCategory2 where id NOT IN (SELECT TOP " + 10 * (index - 1) + " id FROM ProductCategory2 ORDER BY id) and did=@did order by id ";
cmd.Parameters.AddWithValue("@did",category);
cmd.Connection = cn;
cn.Open();
grvProductCategory.DataSource = cmd.ExecuteReader();
grvProductCategory.DataKeyNames = new string[] { "id" };
grvProductCategory.DataBind();
cn.Close();
cmd.Parameters.Clear();
cmd.CommandText = "select count(id) from ProductCategory2 where did=@id";
cmd.Parameters.AddWithValue("@id", category);
cn.Open();
object o = cmd.ExecuteScalar();
if (o != DBNull.Value)
{
AspNetPager1.RecordCount = Convert.ToInt32(o);
}
cn.Close();
}
protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
BindGridView(e.NewPageIndex, Convert.ToInt32(ddlProductCategory1.SelectedValue));
}
现在问题如下:
我通过页面上的那个dropdownlist选择后,分别绑定的是不同类别的数据!
假设:目前ddlProductCategory1控件就绑定了类别A和B(默认初始页面的时候也是显示A类别的数据)
当我选择到A类别的时候,分页控件一切正常。
但是当我把A类别切换到B类别的时候,Gridview进行了一次重新的数据绑定!
OK,这个时候也如程序编写,正常显示了B类别的前10条数据。但是当我点选分页控件的时候,索引的按扭就
失去了效果,无法正常起到翻页的效果,不管怎么点,都还只是B类别数据的最前10条。