This is a migrated thread and some comments may be shown as answers.

Dynamically PagerTemplate

1 Answer 147 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Ahrensberg
Top achievements
Rank 1
Ahrensberg asked on 29 Jan 2010, 01:37 AM
Hi all,

I trying to make a new pagertemplate based on the example from Grid / Pager Template. My custom pagertemplate looks like beneath:

using System;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
using Telerik.Web.UI;  
 
namespace CustomControls  
{  
    public sealed class PagerTemplatePanel : Panel, ITemplate  
    {  
        private readonly string _radGridID;  
        private Control _container;  
 
        public PagerTemplatePanel(string radGridID)  
        {  
            _radGridID = radGridID;  
        }  
 
        public void InstantiateIn(Control container)  
        {  
            _container = container;  
        }  
 
        public override ControlCollection Controls  
        {  
            get  
            {  
                //<asp:Panel Style="padding: 6px; line-height: 24px" runat="server">  
                var panelMain = new Panel();  
                panelMain.Style.Add(HtmlTextWriterStyle.Padding, "6px");  
                panelMain.Style.Add("line-height", "24px");  
 
                //    <asp:Panel Style="margin: 0px; padding: 0px; float: left; margin-right: 10px; white-space: nowrap;" runat="server">  
                var panel1 = new Panel();  
                panel1.Style.Add(HtmlTextWriterStyle.MarginBottom, "0px");  
                panel1.Style.Add(HtmlTextWriterStyle.MarginLeft, "0px");  
                panel1.Style.Add(HtmlTextWriterStyle.MarginTop, "0px");  
                panel1.Style.Add(HtmlTextWriterStyle.MarginRight, "10px");  
                panel1.Style.Add(HtmlTextWriterStyle.Padding, "0px");  
                panel1.Style.Add("float", "left");  
                panel1.Style.Add(HtmlTextWriterStyle.WhiteSpace, "nowrap");  
 
                //        <asp:Button ID="BtnFirstPage" runat="server" OnClientClick="radGrid1ChangePage('first'); return false;" 
                //            CommandName="Page" CommandArgument="First" Text=" " CssClass="PagerButton FirstPage" /> 
                var btnFirstPage = new Button  
                {  
                    OnClientClick = "radGrid1ChangePage('first'); return false;",  
                    CommandName = "Page",  
                    CommandArgument = "First",  
                    Text = " ",  
                    CssClass = "PagerButton FirstPage" 
                };  
 
                //        <asp:Button ID="BtnPrevPage" runat="server" OnClientClick="radGrid1ChangePage('prev'); return false;" 
                //            CommandName="Page" CommandArgument="Prev" Text=" " CssClass="PagerButton PrevPage" /> 
                var btnPrevPage = new Button  
                {  
                    OnClientClick = "radGrid1ChangePage('prev'); return false;",  
                    CommandName = "Page",  
                    CommandArgument = "Prev",  
                    Text = " ",  
                    CssClass = "PagerButton PrevPage" 
                };  
                //    </asp:Panel> 
                panel1.Controls.Add(btnFirstPage);  
                panel1.Controls.Add(btnPrevPage);  
 
                //    <asp:Panel runat="server" ID="NumericPagerPlaceHolder" Style="margin: 0px; padding: 0px; float: left; margin-right: 10px; white-space: nowrap;"/>  
                var panel2 = new Panel();  
                panel2.Style.Add(HtmlTextWriterStyle.MarginBottom, "0px");  
                panel2.Style.Add(HtmlTextWriterStyle.MarginLeft, "0px");  
                panel2.Style.Add(HtmlTextWriterStyle.MarginTop, "0px");  
                panel2.Style.Add(HtmlTextWriterStyle.MarginRight, "10px");  
                panel2.Style.Add(HtmlTextWriterStyle.Padding, "0px");  
                panel2.Style.Add("float", "left");  
                panel2.Style.Add(HtmlTextWriterStyle.WhiteSpace, "nowrap");  
 
                //        <asp:Button ID="BtnNextPage" runat="server" OnClientClick="radGrid1ChangePage('next'); return false;" 
                //            CommandName="Page" CommandArgument="Next" Text=" " CssClass="PagerButton NextPage" /> 
                var btnNextPage = new Button  
                {  
                    OnClientClick = "radGrid1ChangePage('next'); return false;",  
                    CommandName = "Page",  
                    CommandArgument = "Next",  
                    Text = " ",  
                    CssClass = "PagerButton NextPage" 
                };  
 
                //        <asp:Button ID="BtnLastPage" runat="server" OnClientClick="radGrid1ChangePage('last'); return false;" 
                //            CommandName="Page" CommandArgument="Last" Text=" " CssClass="PagerButton LastPage" /> 
                var btnLastPage = new Button  
                {  
                    OnClientClick = "radGrid1ChangePage('last'); return false;",  
                    CommandName = "Page",  
                    CommandArgument = "Last",  
                    Text = " ",  
                    CssClass = "PagerButton LastPage" 
                };  
 
                //    </asp:Panel> 
                panel2.Controls.Add(btnNextPage);  
                panel2.Controls.Add(btnLastPage);  
 
                //    <asp:Panel runat="server" Style="float: right">  
                var panel3 = new Panel();  
                panel3.Style.Add("float", "right");  
 
                //        <asp:Label Text="<%$ Resources:LanguageWeb, ItemsPerPage %>" runat="server"></asp:Label>:  
                var label1 = new Label { Text = Resources.LanguageWeb.ItemsPerPage + ":" };  
 
                //        <telerik:RadComboBox ID="RcbCatalogItemPageSize" DataSource="<%# new object[]{10, 20, 30, 40, 50} %>" 
                //            Style="margin-right: 0px; margin-bottom: 5px;" Width="40px" SelectedValue='<%# DataBinder.Eval(Container, "Paging.PageSize") %>' 
                //            runat="server" OnClientSelectedIndexChanged="RcbCatalogItemPageSize_SelectedIndexChanged">  
                //        </telerik:RadComboBox> 
                var comboBox = new RadComboBox  
                {  
                    ID = "RcbCatalogItemPageSize",  
                    DataSource = new object[] { 10, 20, 30, 40, 50 },  
                    Width = Unit.Pixel(40),  
                    SelectedValue = DataBinder.Eval(_container, "Paging.PageSize").ToString(),  
                    OnClientSelectedIndexChanged = "RcbCatalogItemPageSize_SelectedIndexChanged" 
                };  
                comboBox.Style.Add(HtmlTextWriterStyle.MarginRight, "0px");  
                comboBox.Style.Add(HtmlTextWriterStyle.MarginBottom, "40px");  
 
                //    </asp:Panel> 
                panel3.Controls.Add(label1);  
                panel3.Controls.Add(comboBox);  
 
                //    <asp:Panel Style="margin: 0px; float: right;" runat="server">  
                var panel4 = new Panel();  
                panel4.Style.Add(HtmlTextWriterStyle.Margin, "0px");  
                panel4.Style.Add("float", "right");  
 
                //        <asp:Label Text="<%$ Resources:LanguageWeb, ShowingResult %>" runat="server"></asp:Label> 
                //        <%# (int)DataBinder.Eval(Container, "Paging.FirstIndexInPage") + 1 %> 
                //        -  
                //        <%# (int)DataBinder.Eval(Container, "Paging.LastIndexInPage") + 1 %> 
                //        <asp:Label Text="<%$ Resources:LanguageWeb, OutOf %>" runat="server"></asp:Label> 
                //        <%# DataBinder.Eval(Container, "Paging.DataSourceCount")%> 
                var label2 = new Label  
                {  
                    Text = Resources.LanguageWeb.ShowingResult + " " +  
                           (Convert.ToInt32(DataBinder.Eval(_container, "Paging.FirstIndexInPage")) + 1) +  
                           " - " +  
                           (Convert.ToInt32(DataBinder.Eval(_container, "Paging.LastIndexInPage")) + 1) +  
                           " " + Resources.LanguageWeb.OutOf + " " +  
                           DataBinder.Eval(_container, "Paging.DataSourceCount")  
                };  
 
                //        <asp:Image runat="server" 
                //            ID="RadGrid1IncompleteWarning" ImageUrl="../App_Themes/Default/Graphics/Icons/warning.png" 
                //            ToolTip="<%$ Resources:LanguageWeb, SpecifySearchForCompleteResult %>" 
                //            CssClass="gridWarningIcon" />.&nbsp;  
                var imageIncompleteWarning = new Image  
                {  
                    ID = _radGridID + "IncompleteWarning",  
                    ImageUrl = "../App_Themes/Default/Graphics/Icons/warning.png",  
                    ToolTip = Resources.LanguageWeb.SpecifySearchForCompleteResult,  
                    CssClass = "gridWarningIcon" 
                };  
 
                //    </asp:Panel> 
                panel4.Controls.Add(label2);  
                panel4.Controls.Add(imageIncompleteWarning);  
 
                //</asp:Panel> 
                panelMain.Controls.Add(panel1);  
                panelMain.Controls.Add(panel2);  
                panelMain.Controls.Add(panel3);  
                panelMain.Controls.Add(panel4);  
 
                base.Controls.Add(panelMain);  
 
                return base.Controls;  
            }  
        }  
    }  
}  
 

I am trying to set this pagertemplate in my radgrid init as following:

protected void Grid_Init(object sender, EventArgs e)  
        {  
            if(!(sender is RadGrid)) return;  
            var grid = (RadGrid) sender;  
            grid.MasterTableView.PagerTemplate = new PagerTemplatePanel(grid.ID);  
        } 

But as you probably has guessed, nothing is showing up at my grid. What should I do?

Best regards,
Kenneth

1 Answer, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 29 Jan 2010, 08:06 AM
Hi,

Try setting the instance of your template class to the  PagerTemplate property of the desired GridTableView in the Page_Init event handler instead of the grid init event .

Thanks,
Princy

Tags
Grid
Asked by
Ahrensberg
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Share this question
or