这是aspx前台代码(GridView里面的PagerTemplate): <PagerTemplate>
<table width="80%" style="font-size:12px;">
<tr>
<td style="text-align:center">
第<asp:Label ID="lblPageIndex" runat="server" Text='<%# ((GridView)Container.Parent.Parent).PageIndex + 1 %>'></asp:Label>页
/共<asp:Label ID="lblPageCount" runat="server" Text='<%# ((GridView)Container.Parent.Parent).PageCount %>'></asp:Label>页
<asp:LinkButton ID="btnFirst" runat="server" CausesValidation="False"
CommandName="Page" Text="首页" CommandArgument="first" OnCommand="gvPage_Command">
</asp:LinkButton>
<asp:LinkButton ID="btnPrev" runat="server" CausesValidation="False"
CommandName="Page" Text="上一页" CommandArgument="prev" OnCommand="gvPage_Command">
</asp:LinkButton>
<asp:LinkButton ID="btnNext" runat="server" CausesValidation="False"
CommandName="Page" Text="下一页" CommandArgument="next" OnCommand="gvPage_Command">
</asp:LinkButton>
<asp:LinkButton ID="btnLast" runat="server" CausesValidation="False"
CommandName="Page" Text="尾页" CommandArgument="last" OnCommand="gvPage_Command">
</asp:LinkButton>
<asp:TextBox ID="txtPageIndex" runat="server" Width="20"></asp:TextBox>
<asp:Button ID="btnGo" runat="server" Text="GO" CausesValidation="false" CommandName="Page" CommandArgument="go" OnCommand="gvPage_Command" />
</td>
</tr>
</table>
</PagerTemplate>
这是cs后台代码:protected void gvPage_Command(object sender, EventArgs e)
{
try
{
switch (((LinkButton)sender).CommandArgument.ToString())
{
case "first":
gvSearch.PageIndex = 0;
break;
case "last":
gvSearch.PageIndex = gvSearch.PageCount - 1;
break;
case "prev":
if (gvSearch.PageIndex > 0)
{
gvSearch.PageIndex -= 1;
}
break;
case "next":
if (gvSearch.PageIndex < gvSearch.PageCount - 1)
{
gvSearch.PageIndex += 1;
}
break;
case "go":
GridViewRow gvr = gvSearch.BottomPagerRow;
TextBox txtPageIndex = (TextBox)gvr.FindControl("txtPageIndex");
int index = Convert.ToInt32(txtPageIndex.Text);
if (index > 0 && index < gvSearch.PageCount)
{
gvSearch.PageIndex = index - 1;
}
break;
}
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
if (ViewState["gsql"] != null)
{
string gsql = ViewState["gsql"].ToString();
BindGrid(gsql);
}
}
}
我在方法里面设置了断点,可是就是进不去,用OnCommand、OnClick和GridView的RowCommand都没反应,这是为什么呢?
<table width="80%" style="font-size:12px;">
<tr>
<td style="text-align:center">
第<asp:Label ID="lblPageIndex" runat="server" Text='<%# ((GridView)Container.Parent.Parent).PageIndex + 1 %>'></asp:Label>页
/共<asp:Label ID="lblPageCount" runat="server" Text='<%# ((GridView)Container.Parent.Parent).PageCount %>'></asp:Label>页
<asp:LinkButton ID="btnFirst" runat="server" CausesValidation="False"
CommandName="Page" Text="首页" CommandArgument="first" OnCommand="gvPage_Command">
</asp:LinkButton>
<asp:LinkButton ID="btnPrev" runat="server" CausesValidation="False"
CommandName="Page" Text="上一页" CommandArgument="prev" OnCommand="gvPage_Command">
</asp:LinkButton>
<asp:LinkButton ID="btnNext" runat="server" CausesValidation="False"
CommandName="Page" Text="下一页" CommandArgument="next" OnCommand="gvPage_Command">
</asp:LinkButton>
<asp:LinkButton ID="btnLast" runat="server" CausesValidation="False"
CommandName="Page" Text="尾页" CommandArgument="last" OnCommand="gvPage_Command">
</asp:LinkButton>
<asp:TextBox ID="txtPageIndex" runat="server" Width="20"></asp:TextBox>
<asp:Button ID="btnGo" runat="server" Text="GO" CausesValidation="false" CommandName="Page" CommandArgument="go" OnCommand="gvPage_Command" />
</td>
</tr>
</table>
</PagerTemplate>
这是cs后台代码:protected void gvPage_Command(object sender, EventArgs e)
{
try
{
switch (((LinkButton)sender).CommandArgument.ToString())
{
case "first":
gvSearch.PageIndex = 0;
break;
case "last":
gvSearch.PageIndex = gvSearch.PageCount - 1;
break;
case "prev":
if (gvSearch.PageIndex > 0)
{
gvSearch.PageIndex -= 1;
}
break;
case "next":
if (gvSearch.PageIndex < gvSearch.PageCount - 1)
{
gvSearch.PageIndex += 1;
}
break;
case "go":
GridViewRow gvr = gvSearch.BottomPagerRow;
TextBox txtPageIndex = (TextBox)gvr.FindControl("txtPageIndex");
int index = Convert.ToInt32(txtPageIndex.Text);
if (index > 0 && index < gvSearch.PageCount)
{
gvSearch.PageIndex = index - 1;
}
break;
}
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
if (ViewState["gsql"] != null)
{
string gsql = ViewState["gsql"].ToString();
BindGrid(gsql);
}
}
}
我在方法里面设置了断点,可是就是进不去,用OnCommand、OnClick和GridView的RowCommand都没反应,这是为什么呢?
GridView_Page PageIndexChanging()
{
` GridView.PageIndex = e.NewPageIndex;
}
我按你的加上了这个事件,可是还是一样啊,在gvPage_Command和gvSearch_PageIndexChanging里设了断点,还是没有进去,点了下一页postback后GridView没内容了
GridView_Page PageIndexChanging()
{
` GridView.PageIndex = e.NewPageIndex;
}
AllowPagging=true
引用 5 楼 ximenwuji 的回复:
有个事件写上没有
GridView_Page PageIndexChanging()
{
` GridView.PageIndex = e.NewPageIndex;
}AllowPagging=true
+2
怎么这么奇怪,昨晚没加PageIndexChanging的时候不行,然后今天打开项目再调试,还是没加PageIndexChanging来调试发现能实现分页功能了,加上PageIndexChanging后在里面设置断点,发现按"下一页"的时候没有进去,可是分页功能还是行的,这请问是什么原因?
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
gvBind();
}