基本上,当您单击 DetailsView 的任何编号的分页按钮时,不会发生验证。
甚至阻止完整的回发也需要页面检查客户端验证。为了使验证发生在服务器端,调用Page.Validate()
DetailsViewPageIndexChanging
事件。如果页面无效,则阻止分页发生。
注意 I:您也可以调用Page.Validate()
内部 Page_Load
事件。您不必DetailsView.PageIndexChanging
只在事件中调用此事件。
注意二:如果您只想防止分页发生并且不想使用 PagerTemplates
,请使用服务器端验证。回发总是会发生,尽管如果 Page 无效,则不会发生 Paging。
<PagerTemplates>
首先在 DetailsView 中使用for pagingCausesValidation
并将分页器按钮的属性设置为 true。& CommandArgument的以下设置CommandName
将自动处理您的分页。请参阅 MSDN。
<pagertemplate>
<asp:LinkButton id="PreviousButton"
text=" Previous_"
CommandName="Page"
CommandArgument="Prev" CausesValidation="true"
runat="Server"/>
<asp:LinkButton id="NextButton"
text="Next_"
CommandName="Page"
CommandArgument="Next" CausesValidation="true"
runat="Server"/>
</pagertemplate>
详细信息视图的标记:
<asp:DetailsView runat="server" ID="EmpDetails"
OnPageIndexChanging="EmpDetails_PageIndexChanging" ... />
事件处理程序
protected void EmpDetails_PageIndexChanging(object sender, DetailsViewPageEventArgs e)
{
Page.Validate();
if (!Page.IsValid)
e.Cancel = true;// Prevent the paging
}