C# FormView在数据源中只有1项时不显示PagerTemplate
我有一个带有自定义PagerTemplate的FormView控件,该控件带有我自己的分页链接按钮。在我加载的数据集只包含一条记录/项并完全隐藏PagerTemplate之前,所有这些都非常有效。我在网上搜索了几个答案,只需添加:C# FormView在数据源中只有1项时不显示PagerTemplate,c#,asp.net,datasource,formview,pagertemplate,C#,Asp.net,Datasource,Formview,Pagertemplate,我有一个带有自定义PagerTemplate的FormView控件,该控件带有我自己的分页链接按钮。在我加载的数据集只包含一条记录/项并完全隐藏PagerTemplate之前,所有这些都非常有效。我在网上搜索了几个答案,只需添加: protected void fvAppHMDA_PreRender(object sender, EventArgs e) { if (fvAppHMDA.TopPagerRow != null) fvAppHMDA.
protected void fvAppHMDA_PreRender(object sender, EventArgs e)
{
if (fvAppHMDA.TopPagerRow != null)
fvAppHMDA.TopPagerRow.Visible = true;
}
然而,这并没有带来任何不同。似乎当数据集中只有一条记录时,FormView.TopPagerRow始终为空。似乎需要有一种方法来拦截它,但我在OnPreRender和OnDataBound事件中都尝试过,但仍然没有骰子
下面是我的代码示例(如果有帮助的话):
ASPX
<asp:FormView ID="fvAppHMDA" runat="server" AllowPaging="True" DefaultMode="Edit" DataSourceID="dsLoanApplication" Width="100%" onpageindexchanging="fvAppHMDA_PageIndexChanging" OnDataBound="fvAppHMDA_DataBound" OnPageIndexChanged="fvAppHMDA_PageIndexChanged" OnItemCreated="fvAppHMDA_ItemCreated" DataKeyNames="ApplicationID" OnPreRender="fvAppHMDA_PreRender">
<PagerTemplate>
<div class="tab_toolbar">
<asp:LinkButton ID="lnkMoveFirst" runat="server"
ToolTip="Move to the First Application" CommandName="Page"
CommandArgument="First"><img src="images/icons/Icon_ArrowBackEnd.png" width="16" height="16" class="grid2" alt="Move to the First Application" /></asp:LinkButton>
<asp:LinkButton ID="lnkMovePrevPage" runat="server"
ToolTip="Move to the Previous Page" CommandName="Page"
onclick="lnkMovePrevPage_Click" Enabled="False"><img src="images/icons/Icon_ArrowBackSkip.png" width="16" height="16" class="grid2" alt="Move to the Previous Page" /></asp:LinkButton>
<asp:LinkButton ID="lnkMovePrevApp" runat="server"
ToolTip="Move to the Previous Application" CommandName="Page"
CommandArgument="Prev"><img src="images/icons/Icon_ArrowBack.png" width="16" height="16" class="grid2" alt="Move to the Previous Application" /></asp:LinkButton>
<div class="grid2_container"><asp:TextBox ID="txtMoveNumber" runat="server" Text="0" Columns="5"></asp:TextBox> of <asp:Label ID="lblMoveTotal" runat="server" Text="0"></asp:Label></div>
<asp:LinkButton ID="lnkMoveNextApp" runat="server"
ToolTip="Move to the Next Application" CommandName="Page"
CommandArgument="Next"><img src="images/icons/Icon_ArrowForward.png" width="16" height="16" class="grid2" alt="Move to the Next Application" /></asp:LinkButton>
<asp:LinkButton ID="lnkMoveNextPage" runat="server"
ToolTip="Move to the Next Page" CommandName="Page"
onclick="lnkMoveNextPage_Click" Enabled="False"><img src="images/icons/Icon_ArrowForwardSkip.png" width="16" height="16" class="grid2" alt="Move to the Next Page" /></asp:LinkButton>
<asp:LinkButton ID="lnkMoveLast" runat="server"
ToolTip="Move to the Last Application" CommandName="Page"
CommandArgument="Last"><img src="images/icons/Icon_ArrowForwardEnd.png" width="16" height="16" class="grid2" alt="Move to the Last Application" /></asp:LinkButton>
</div>
</PagerTemplate>
<PagerSettings Mode="NextPreviousFirstLast" Position="Top" />
<EditItemTemplate>
<!-- FORM CONTROLS HERE -->
</EditItemTemplate>
属于
代码隐藏
protected void fvAppHMDA_PreRender(object sender, EventArgs e)
{
if (fvAppHMDA.TopPagerRow != null)
fvAppHMDA.TopPagerRow.Visible = true;
}
protected void fvAppHMDA_DataBound(object sender, EventArgs e)
{
if (fvAppHMDA.DataItemCount != 0)
{
// Update Current and Total Page
((Label)fvAppHMDA.TopPagerRow.FindControl("lblMoveTotal")).Text = fvAppHMDA.PageCount.ToString();
((TextBox)fvAppHMDA.TopPagerRow.FindControl("txtMoveNumber")).Text = (fvAppHMDA.PageIndex + 1).ToString();
// Enable/Disable Page buttons based on Current Page
if (fvAppHMDA.PageIndex + 1 == fvAppHMDA.PageCount)
{
((LinkButton)fvAppHMDA.TopPagerRow.FindControl("lnkMoveLast")).Enabled = false;
((LinkButton)fvAppHMDA.TopPagerRow.FindControl("lnkMoveNextApp")).Enabled = false;
}
else if (fvAppHMDA.PageIndex == 0)
{
((LinkButton)fvAppHMDA.TopPagerRow.FindControl("lnkMoveFirst")).Enabled = false;
((LinkButton)fvAppHMDA.TopPagerRow.FindControl("lnkMovePrevApp")).Enabled = false;
}
if (fvAppHMDA.PageIndex + 10 <= fvAppHMDA.PageCount - 1)
{
((LinkButton)fvAppHMDA.TopPagerRow.FindControl("lnkMoveNextPage")).Enabled = true;
}
if (fvAppHMDA.PageIndex - 10 > -1)
{
((LinkButton)fvAppHMDA.TopPagerRow.FindControl("lnkMovePrevPage")).Enabled = true;
}
fvAppHMDA.TopPagerRow.Cells[0].Visible = true;
}
if (fvAppHMDA.TopPagerRow != null)
fvAppHMDA.TopPagerRow.Visible = true;
}
protectedvoid fvAppHMDA_PreRender(对象发送方,事件参数e)
{
如果(fvAppHMDA.TopPagerRow!=null)
fvAppHMDA.TopPagerRow.Visible=true;
}
受保护的void fvAppHMDA_数据绑定(对象发送方,事件参数e)
{
如果(fvAppHMDA.DataItemCount!=0)
{
//更新当前页面和总页面
((Label)fvAppHMDA.TopPagerRow.FindControl(“lblmovetall”)).Text=fvAppHMDA.PageCount.ToString();
((文本框)fvAppHMDA.TopPagerRow.FindControl(“txtMoveNumber”)).Text=(fvAppHMDA.PageIndex+1.ToString();
//基于当前页面启用/禁用页面按钮
if(fvAppHMDA.PageIndex+1==fvAppHMDA.PageCount)
{
((LinkButton)fvAppHMDA.TopPagerRow.FindControl(“lnkMoveLast”)。Enabled=false;
((LinkButton)fvAppHMDA.TopPagerRow.FindControl(“lnkMoveNextApp”)。Enabled=false;
}
else if(fvAppHMDA.PageIndex==0)
{
((LinkButton)fvAppHMDA.TopPagerRow.FindControl(“lnkMoveFirst”)).Enabled=false;
((LinkButton)fvAppHMDA.TopPagerRow.FindControl(“lnkMovePrevApp”)).Enabled=false;
}
如果(fvAppHMDA.PageIndex+10-1)
{
((LinkButton)fvAppHMDA.TopPagerRow.FindControl(“lnkMovePrevPage”)).Enabled=true;
}
fvAppHMDA.TopPagerRow.Cells[0].Visible=true;
}
如果(fvAppHMDA.TopPagerRow!=null)
fvAppHMDA.TopPagerRow.Visible=true;
}
谢谢 我试过这个,效果很好。如果你想要一排最上面的传呼机,我想HeaderTemplate也可以
“在我设置的FormView的标记中:
AllowPaging=“true”
PagerSettings Visible=“false”
然后,我将所有分页控件放在FormView的FooterTemplate中。通过这种方式,我仍然能够处理所有分页事件,并且即使数据源中只返回一条记录,也始终可以看到“分页行”