我有一个带有
GridView
的 asp.net 网页
<asp:GridView ID="grid_view" runat="server" AllowPaging="True"
AutoGenerateColumns="False" BackColor="White" BorderColor="#999999"
BorderStyle="Solid" BorderWidth="1px" CellPadding="3" ForeColor="Black"
GridLines="Vertical">
<FooterStyle BackColor="#CCCCCC" />
<Columns>
<asp:BoundField DataField="adc" HeaderText="Posa No." />
<asp:BoundField DataField="cde" HeaderText="Unit" />
<asp:BoundField DataField="efg" HeaderText="User" />
<asp:BoundField DataField="hj" HeaderText="Posa Date" />
</Columns>
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="#CCCCCC" />
</asp:GridView>
我的代码是
protected void Page_Load(object sender, EventArgs e)
{
con = new SqlConnection(ConfigurationManager.AppSettings["Connection"]);
gridfil();
}
public void gridfil()
{
con.Open();
cmd = new SqlCommand("select a,b,c from xyz where approved='sss'", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
SqlCommandBuilder cb = new SqlCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds);
grid_view.DataSource = ds;
grid_view.DataBind();
//rd.Close();
da.Dispose();
cmd.Dispose();
con.Close();
}
protected void grid_view_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
grid_view.PageIndex = e.NewPageIndex;
gridfil();
}
我的问题是网格视图已显示,但页面索引不起作用...... 有人有什么建议吗?
将页面加载代码放在
!IsPostBack()
下
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
con = new SqlConnection(ConfigurationManager.AppSettings["Connection"]);
gridfil();
}
}
原因: 每当您单击页码并想要查看另一个页面时,页面将被回发,并且您的
page load event
在 grid_view_PageIndexChanging
之前触发,它将重新绑定 gridview,您的事件将丢失,并且不会触发 PageIndexChanging活动。
再改一下看看评论
protected void grid_view_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gridfil(); // First bind the gridview
grid_view.PageIndex = e.NewPageIndex; // then change the page Index
}