or

We would to follow the customizing of the pager for the RadGrid as shown in the example on this url:
http://demos.telerik.com/aspnet-ajax/grid/examples/programming/customizingpager/defaultcs.aspx
However, using this code, the MyPager class doesn't cause the PageIndexChanged event to be fired. We have some validations on the Page index changed based on which the event can be cancelled or allowed. I would like to know how to implement this functionality.
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Globalization;using Telerik.Web.UI;using System.Data;public partial class Admin_WriteUps : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { GridSortExpression expression = new GridSortExpression(); expression.FieldName = "DateAdded"; expression.SetSortOrder("Descending"); RadGrid1.MasterTableView.SortExpressions.AddSortExpression(expression); } } #region Validator Methods protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) { DateTime inputdate = new DateTime(); if (args.Value.Length > 0) { if (DateTime.TryParseExact(args.Value, "M/d/yyyy", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out inputdate)) { args.IsValid = true; } else { args.IsValid = false; } } else { args.IsValid = false; } } #endregion protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item is GridEditableItem && e.Item.IsInEditMode) { GridEditableItem item = (GridEditableItem)e.Item; RadDatePicker RadDatePicker2 = item.FindControl("RadDatePicker2") as RadDatePicker; if (e.Item.OwnerTableView.IsItemInserted) { //item is about to be inserted RadDatePicker2.Enabled = true; RadDatePicker2.SelectedDate = DateTime.Now; } else { RadDatePicker2.Enabled = false; } } else if (e.Item is GridDataItem) { GridDataItem item = (GridDataItem)e.Item; Label InsLabel = item.FindControl("InsLabel") as Label; if (InsLabel != null) { DataView Insurance_DataView = (DataView)Insurance_DataSource.Select(DataSourceSelectArguments.Empty); int indx = 0; if (Int32.TryParse(((System.Data.DataRowView)(item.DataItem)).Row["Ins"].ToString(), out indx)) { Insurance_DataView.Sort = "ID"; InsLabel.Text = Insurance_DataView[Insurance_DataView.Find(indx)]["Name"].ToString(); } else { InsLabel.Text = ""; } } Label CampaignLabel = item.FindControl("CampaignLabel") as Label; if (CampaignLabel != null) { DataView Campaigns_DataView = (DataView)Campaigns_DataSource.Select(DataSourceSelectArguments.Empty); int indx = 0; if (Int32.TryParse(((System.Data.DataRowView)(item.DataItem)).Row["Campaign"].ToString(), out indx)) { Campaigns_DataView.Sort = "ID"; CampaignLabel.Text = Campaigns_DataView[Campaigns_DataView.Find(indx)]["Campaign"].ToString(); } else { CampaignLabel.Text = ""; } } Label CCRepLabel = item.FindControl("CCRepLabel") as Label; if (CCRepLabel != null) { DataView CCReps_DataView = (DataView)CCReps_DataSource.Select(DataSourceSelectArguments.Empty); int indx = 0; if (Int32.TryParse(((System.Data.DataRowView)(item.DataItem)).Row["CCRep"].ToString(), out indx)) { CCReps_DataView.Sort = "ID"; CCRepLabel.Text = CCReps_DataView[CCReps_DataView.Find(indx)]["Name"].ToString(); } else { CCRepLabel.Text = ""; } } Label StateLabel = item.FindControl("StateLabel") as Label; if (StateLabel != null) { DataView States_DataView = (DataView)States_DataSource.Select(DataSourceSelectArguments.Empty); int indx = 0; if (Int32.TryParse(((System.Data.DataRowView)(item.DataItem)).Row["State"].ToString(), out indx)) { States_DataView.Sort = "ID"; StateLabel.Text = States_DataView[States_DataView.Find(indx)]["StateName"].ToString(); } else { StateLabel.Text = ""; } } } } protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "Delete") { } }}<%@ Page Title="" Language="C#" MasterPageFile="~/App_Master/Admin.master" AutoEventWireup="true" CodeFile="Leads.aspx.cs" Inherits="Admin_WriteUps" Theme="Reports" %><asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> <script type="text/javascript"> function onRequestStart(sender, args) { if (args.get_eventTarget().indexOf("ExportToExcelButton") >= 0 || args.get_eventTarget().indexOf("ExportToWordButton") >= 0 || args.get_eventTarget().indexOf("ExportToCsvButton") >= 0) { args.set_enableAjax(false); } } </script> <br /> <div class="container_label"> Add/Update/Delete Lead Records:</div> <div> <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Skin="Office2007"> </telerik:RadAjaxLoadingPanel> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> <ClientEvents OnRequestStart="onRequestStart" /> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RadGrid1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <telerik:RadGrid ID="RadGrid1" runat="server" AllowFilteringByColumn="True" AllowSorting="True" DataSourceID="WriteUps_DataSource" GridLines="None" ShowGroupPanel="True" Skin="Office2007" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" AllowAutomaticUpdates="True" AllowMultiRowSelection="True" AutoGenerateColumns="False" AutoGenerateDeleteColumn="True" OnItemDataBound="RadGrid1_ItemDataBound" Width="1400px" OnItemCommand="RadGrid1_ItemCommand" Height="800px" AllowPaging="True" PageSize="100" ShowFooter="True"> <ExportSettings ExportOnlyData="True" HideStructureColumns="True" FileName="Leads" IgnorePaging="True" OpenInNewWindow="True"> </ExportSettings> <MasterTableView CommandItemDisplay="Top" DataKeyNames="ID" DataSourceID="WriteUps_DataSource" EditMode="PopUp" GroupLoadMode="Client" InsertItemPageIndexAction="ShowItemOnCurrentPage"> <CommandItemSettings ExportToPdfText="Export to Pdf" ShowExportToExcelButton="True" /> <GroupByExpressions> <telerik:GridGroupByExpression> <SelectFields> <telerik:GridGroupByField FieldAlias="Leads" FieldName="DateAdded" FormatString="{0:D}" HeaderValueSeparator=" on: "></telerik:GridGroupByField> </SelectFields> <GroupByFields> <telerik:GridGroupByField FieldName="DateAdded" SortOrder="Descending"></telerik:GridGroupByField> </GroupByFields> </telerik:GridGroupByExpression> </GroupByExpressions> <Columns> <telerik:GridEditCommandColumn ButtonType="ImageButton" HeaderStyle-Width="30"> <HeaderStyle Width="30px" /> </telerik:GridEditCommandColumn> <telerik:GridTemplateColumn AllowFiltering="False" DataField="DateAdded" DataType="System.DateTime" GroupByExpression="DateAdded Group By DateAdded desc" HeaderText="Date" SortExpression="DateAdded" UniqueName="DateAdded" HeaderStyle-Width="80"> <EditItemTemplate> <telerik:RadDatePicker ID="RadDatePicker2" runat="server" Culture="English (United States)" DbSelectedDate='<%# Bind("DateAdded") %>' Skin="Office2007" ShowPopupOnFocus="True"> <Calendar Skin="Office2007" UseColumnHeadersAsSelectors="False" UseRowHeadersAsSelectors="False" ViewSelectorText="x"> </Calendar> <DatePopupButton HoverImageUrl="" ImageUrl="" /> <DateInput DateFormat="M/d/yyyy" DisplayDateFormat="M/d/yyyy"> </DateInput> </telerik:RadDatePicker> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="RadDatePicker2" ErrorMessage="Date Required" SetFocusOnError="True"></asp:RequiredFieldValidator> </EditItemTemplate> <ItemTemplate> <asp:Label ID="DateAddedLabel" runat="server" Text='<%# Bind("DateAdded", "{0:MM/dd/yyyy}") %>'></asp:Label> </ItemTemplate> <HeaderStyle Width="80px" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="PtName" HeaderText="Name" SortExpression="PtName" UniqueName="PtName" Groupable="False"> <EditItemTemplate> <telerik:RadTextBox ID="RadTextBox1" runat="server" EmptyMessage="Lead Name" Skin="Office2007" Text='<%# Bind("PtName") %>' Width="125px"> </telerik:RadTextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="RadTextBox1" ErrorMessage="Name Required" SetFocusOnError="True"></asp:RequiredFieldValidator> </EditItemTemplate> <ItemTemplate> <asp:Label ID="PtNameLabel" runat="server" Text='<%# Bind("PtName") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="Ins" DataType="System.Int32" HeaderText="Insurance" SortExpression="Ins" UniqueName="Ins" GroupByExpression="Ins Group By Ins desc"> <EditItemTemplate> <telerik:RadComboBox ID="RadComboBox1" runat="server" DataSourceID="Insurance_DataSource" DataTextField="Name" DataValueField="ID" EmptyMessage="Search for Insurance" MarkFirstMatch="True" NoWrap="True" SelectedValue='<%# Bind("Ins") %>' Skin="Office2007" Sort="Ascending" ItemStyle-Wrap="false" HeaderStyle-Width="200" AppendDataBoundItems="True"> <Items> <telerik:RadComboBoxItem Selected="true" /> </Items> </telerik:RadComboBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="InsLabel" runat="server"></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="State" DataType="System.Int32" HeaderText="State" SortExpression="State" UniqueName="State" GroupByExpression="State Group By State desc" HeaderStyle-Width="120"> <EditItemTemplate> <telerik:RadComboBox ID="RadComboBox5" runat="server" DataSourceID="States_DataSource" DataTextField="StateName" DataValueField="ID" EmptyMessage="Search for State" MarkFirstMatch="True" SelectedValue='<%# Bind("State") %>' Skin="Office2007" Sort="Ascending" AppendDataBoundItems="True"> <Items> <telerik:RadComboBoxItem Selected="true" /> </Items> </telerik:RadComboBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="StateLabel" runat="server"></asp:Label> </ItemTemplate> <HeaderStyle Width="120px" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn AllowFiltering="False" DataField="CCRep" DataType="System.Int32" HeaderText="Call Center Rep" SortExpression="CCRep" UniqueName="CCRep" GroupByExpression="CCRep Group By CCRep desc" HeaderStyle-Width="100"> <EditItemTemplate> <telerik:RadComboBox ID="RadComboBox3" runat="server" DataSourceID="CCReps_DataSource" DataTextField="Name" DataValueField="ID" EmptyMessage="Search for CC Rep" MarkFirstMatch="True" NoWrap="True" SelectedValue='<%# Bind("CCRep") %>' Skin="Office2007" Sort="Ascending" AppendDataBoundItems="True"> <Items> <telerik:RadComboBoxItem Selected="true" /> </Items> </telerik:RadComboBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="CCRepLabel" runat="server"></asp:Label> </ItemTemplate> <HeaderStyle Width="100px" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="Campaign" DataType="System.Int32" HeaderText="Campaign" SortExpression="Campaign" UniqueName="Campaign" ItemStyle-Wrap="false" HeaderStyle-Width="200" GroupByExpression='Campaign Group By Campaign desc'> <EditItemTemplate> <telerik:RadComboBox ID="RadComboBox2" runat="server" DataSourceID="Campaigns_DataSource" DataTextField="Campaign" DataValueField="ID" EmptyMessage="Search for Campaign" MarkFirstMatch="True" NoWrap="True" SelectedValue='<%# Bind("Campaign") %>' Skin="Office2007" Sort="Ascending" AppendDataBoundItems="True"> <Items> <telerik:RadComboBoxItem Selected="true" /> </Items> </telerik:RadComboBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="CampaignLabel" runat="server"></asp:Label> </ItemTemplate> <HeaderStyle Width="200px" /> <ItemStyle Wrap="False" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn AllowFiltering="False" DataField="Source" HeaderText="Source" SortExpression="Source" UniqueName="Source" GroupByExpression="Source Group By Source desc" HeaderStyle-Width="75"> <EditItemTemplate> <telerik:RadComboBox ID="RadComboBox4" runat="server" SelectedValue='<%# Bind("Source") %>' Skin="Office2007" Sort="Ascending"> <Items> <telerik:RadComboBoxItem runat="server" Selected="true" Text="Call" Value="CALL" /> <telerik:RadComboBoxItem runat="server" Text="Chat" Value="CHAT" /> <telerik:RadComboBoxItem runat="server" Text="E-mail" Value="E-MAIL" /> <telerik:RadComboBoxItem runat="server" Text="Walk-In" Value="WALK-IN" /> <telerik:RadComboBoxItem runat="server" Text="Unknown" Value="UNKNOWN" /> </Items> </telerik:RadComboBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="SourceLabel" runat="server" Text='<%# Bind("Source") %>'></asp:Label> </ItemTemplate> <HeaderStyle Width="75px" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="Outcome" Groupable="False" HeaderText="Outcome" SortExpression="Outcome" UniqueName="Outcome" ItemStyle-Wrap="False"> <EditItemTemplate> <telerik:RadTextBox ID="RadTextBox2" runat="server" EmptyMessage="Enter Lead Outcome" Height="75px" Skin="Office2007" Text='<%# Bind("Outcome") %>' Width="200px" TextMode="MultiLine"> </telerik:RadTextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="OutcomeLabel" runat="server" Text='<%# Bind("Outcome") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> <EditFormSettings> <EditColumn UniqueName="EditCommandColumn1"> </EditColumn> </EditFormSettings> </MasterTableView> <GroupingSettings ShowUnGroupButton="True" /> <ClientSettings AllowDragToGroup="True" EnableRowHoverStyle="true"> <Scrolling AllowScroll="True" UseStaticHeaders="True" /> <Selecting AllowRowSelect="false" EnableDragToSelectRows="false" /> </ClientSettings> </telerik:RadGrid> <br /> </div> <asp:SqlDataSource ID="WriteUps_DataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" InsertCommand="INSERT INTO [WriteUps] ([DateAdded], [PtName], [Ins], [Campaign], [Outcome], [CCRep], [Source], [NumberCalled], [State]) VALUES (@DateAdded, @PtName, @Ins, @Campaign, @Outcome, @CCRep, @Source, @NumberCalled, @State)" SelectCommand="SELECT [ID], [DateAdded], [PtName], [Ins], [Campaign], [Outcome], [CCRep], [Source], [NumberCalled], [State] FROM [WriteUps]" DeleteCommand="DELETE FROM [WriteUps] WHERE [ID] = @original_ID" UpdateCommand="UPDATE [WriteUps] SET [DateAdded] = @DateAdded, [PtName] = @PtName, [Ins] = @Ins, [Campaign] = @Campaign, [Outcome] = @Outcome, [CCRep] = @CCRep, [Source] = @Source, [NumberCalled] = @NumberCalled, [State] = @State WHERE [ID] = @original_ID AND (([DateAdded] = @original_DateAdded) OR ([DateAdded] IS NULL AND @original_DateAdded IS NULL)) AND (([PtName] = @original_PtName) OR ([PtName] IS NULL AND @original_PtName IS NULL)) AND (([Ins] = @original_Ins) OR ([Ins] IS NULL AND @original_Ins IS NULL)) AND (([Campaign] = @original_Campaign) OR ([Campaign] IS NULL AND @original_Campaign IS NULL)) AND (([Outcome] = @original_Outcome) OR ([Outcome] IS NULL AND @original_Outcome IS NULL)) AND (([CCRep] = @original_CCRep) OR ([CCRep] IS NULL AND @original_CCRep IS NULL)) AND (([Source] = @original_Source) OR ([Source] IS NULL AND @original_Source IS NULL)) AND (([NumberCalled] = @original_NumberCalled) OR ([NumberCalled] IS NULL AND @original_NumberCalled IS NULL)) AND (([State] = @original_State) OR ([State] IS NULL AND @original_State IS NULL))" OldValuesParameterFormatString="original_{0}" ConflictDetection="CompareAllValues"> <DeleteParameters> <asp:Parameter Name="original_ID" Type="Int32" /> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="DateAdded" DbType="Date" /> <asp:Parameter Name="PtName" Type="String" /> <asp:Parameter Name="Ins" Type="Int32" /> <asp:Parameter Name="Campaign" Type="Int32" /> <asp:Parameter Name="Outcome" Type="String" /> <asp:Parameter Name="CCRep" Type="Int32" /> <asp:Parameter Name="Source" Type="String" /> <asp:Parameter Name="NumberCalled" Type="String" /> <asp:Parameter Name="State" Type="Int32" /> <asp:Parameter Name="original_ID" Type="Int32" /> <asp:Parameter Name="original_DateAdded" DbType="Date" /> <asp:Parameter Name="original_PtName" Type="String" /> <asp:Parameter Name="original_Ins" Type="Int32" /> <asp:Parameter Name="original_Campaign" Type="Int32" /> <asp:Parameter Name="original_Outcome" Type="String" /> <asp:Parameter Name="original_CCRep" Type="Int32" /> <asp:Parameter Name="original_Source" Type="String" /> <asp:Parameter Name="original_NumberCalled" Type="String" /> <asp:Parameter Name="original_State" Type="Int32" /> </UpdateParameters> <InsertParameters> <asp:Parameter Name="DateAdded" DbType="Date" /> <asp:Parameter Name="PtName" Type="String" /> <asp:Parameter Name="Ins" Type="Int32" /> <asp:Parameter Name="Campaign" Type="Int32" /> <asp:Parameter Name="Outcome" Type="String" /> <asp:Parameter Name="CCRep" Type="Int32" /> <asp:Parameter Name="Source" Type="String" /> <asp:Parameter Name="NumberCalled" Type="String" /> <asp:Parameter Name="State" Type="Int32" /> </InsertParameters> </asp:SqlDataSource> <asp:SqlDataSource ID="CCReps_DataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [ID], [Name] FROM [CCReps] ORDER BY [Name]"></asp:SqlDataSource> <asp:SqlDataSource ID="Insurance_DataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [ID], [Name] FROM [Insurance] ORDER BY [Name]"></asp:SqlDataSource> <asp:SqlDataSource ID="Referral_DataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [ID], [Name] FROM [Referral] ORDER BY [Name]"></asp:SqlDataSource> <asp:SqlDataSource ID="CareLevel_DataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [ID], [CareLevel] FROM [CareLevels] ORDER BY [CareLevel]"> </asp:SqlDataSource> <asp:SqlDataSource ID="Campaigns_DataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [ID], [Campaign] FROM [Campaigns] ORDER BY [Campaign]"> </asp:SqlDataSource> <asp:SqlDataSource ID="States_DataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [ID], [StateCode], [StateName] FROM [States] ORDER BY [StateName]"> </asp:SqlDataSource></asp:Content>