Hi Gurus,
I am dynamically calling a usercontrol,
my issue is,when i click the paging button,the control is not loading (i need to use custom paging not built in paging)
Here is the code:
Default.aspx
------------------
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="DynamicControls._Default" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:ScriptManager ID="Sc1" runat="server">
</asp:ScriptManager>
<table>
<tr>
<td>
<telerik:RadTabStrip runat="server" ID="rdTabMessages" Skin="MetroTouch" EnableEmbeddedSkins="False"
CssClass="Tabcontrols_left" MultiPageID="RadMultiPage1" Orientation="VerticalLeft"
SelectedIndex="0" OnTabClick="tabClick">
<Tabs>
<telerik:RadTab TabIndex="0" CssClass="appointments" Text="Control1">
</telerik:RadTab>
<telerik:RadTab TabIndex="1" CssClass="appointments" Text="Control2">
</telerik:RadTab>
<telerik:RadTab TabIndex="2" CssClass="appointments" Text="Control3">
</telerik:RadTab>
</Tabs>
</telerik:RadTabStrip>
</td>
<td>
<telerik:RadMultiPage runat="server" ID="RadMultiPage1" SelectedIndex="0" CssClass="Tacontrols_right">
<telerik:RadPageView runat="server" ID="RadPageView1">
<asp:Panel ID="pnlConfiguration" runat="server">
This is Control1
</asp:Panel>
</telerik:RadPageView>
<telerik:RadPageView runat="server" ID="RadPageView2">
<asp:Panel ID="pnlWebPages" runat="server">
This is Control2
</asp:Panel>
</telerik:RadPageView>
<telerik:RadPageView runat="server" ID="RadPageView3">
<asp:Panel ID="pnlTestimonial" runat="server">
</asp:Panel>
</telerik:RadPageView>
</telerik:RadMultiPage>
</td>
</tr>
</table>
</asp:Content>
CodeBehind
----------------
protected void tabClick(object sender, RadTabStripEventArgs e)
{
if (e.Tab.TabIndex == 0)
{
//e.Tab.Selected = true;
}
if (e.Tab.TabIndex == 1)
{
}
if (e.Tab.TabIndex == 2)
{
pnlTestimonial.Controls.Clear();
string controlPath = "~/Controls/RadSchedulerCS.ascx";
RadSchedulerCS uc = (RadSchedulerCS)LoadControl(controlPath);
uc.ID = "RadScheduler";
uc.BindGrid(1);
pnlTestimonial.Controls.Add(uc);
//if (uc != null)
//{
// DataList dlPager = (DataList)uc.FindControl("dlPager");
// if (dlPager != null)
// {
// LinkButton lnkPageNo = (LinkButton)dlPager.FindControl("lnkPageNo");
// dlPager.ItemCommand += new DataListCommandEventHandler(dlPager_ItemCommand);
// }
//}
}
}
protected void dlPager_ItemCommand(object source, DataListCommandEventArgs e)
{
pnlTestimonial.Controls.Clear();
string controlPath = "~/Controls/RadSchedulerCS.ascx";
RadSchedulerCS uc = (RadSchedulerCS)LoadControl(controlPath);
uc.ID = "RadScheduler";
uc.BindGrid(1);
pnlTestimonial.Controls.Add(uc);
}
RadSchedulerCS.ascx
---------------------------
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RadSchedulerCS.ascx.cs" Inherits="DynamicControls.Controls.RadSchedulerCS" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<asp:GridView ID="Gv1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="ID">
<ItemTemplate>
<asp:Label ID="lblID" runat="server" Text='<%#Eval("ID") %>' Visible="true"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblName" runat="server" Text='<%# Eval("FName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="DOB">
<ItemTemplate>
<asp:Label ID="lblDOB" runat="server" Text='<%# Eval("DOB") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:DataList CellPadding="5" RepeatDirection="Horizontal" runat="server" ID="dlPager"
OnItemCommand="dlPager_ItemCommand" >
<ItemTemplate>
<asp:LinkButton Enabled='<%#Eval("Enabled") %>' runat="server" ID="lnkPageNo" Text='<%#Eval("Text") %>'
CommandArgument='<%#Eval("Value") %>' CommandName="PageNo" CausesValidation="false"></asp:LinkButton>
</ItemTemplate>
</asp:DataList>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace DynamicControls.Controls
{
public partial class RadSchedulerCS : System.Web.UI.UserControl
{
#region DECLRATIONS
public delegate void MyCustomHandler(object sender, EventArgs e); //This is for button click
public event MyCustomHandler SomethingClicked;
#endregion
protected void Page_PreRender(object sender, EventArgs e)
{
// Workaround to prevent clicking twice on the pager to have results displayed properly
this.Gv1.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrid(1);
}
}
public void BindGrid(int currentPage)
{
List<Employee> empList = new List<Employee>();
empList.Add(new Employee() { ID = 1, FName = "John", DOB = DateTime.Parse("12/11/1971") });
empList.Add(new Employee() { ID = 2, FName = "Mary", DOB = DateTime.Parse("01/17/1961") });
empList.Add(new Employee() { ID = 3, FName = "Amber", DOB = DateTime.Parse("12/23/1971") });
empList.Add(new Employee() { ID = 4, FName = "Kathy", DOB = DateTime.Parse("11/15/1976") });
empList.Add(new Employee() { ID = 5, FName = "Lena", DOB = DateTime.Parse("05/11/1978") });
empList.Add(new Employee() { ID = 6, FName = "John1", DOB = DateTime.Parse("12/11/1971") });
empList.Add(new Employee() { ID = 7, FName = "Mary1", DOB = DateTime.Parse("01/17/1961") });
empList.Add(new Employee() { ID = 8, FName = "Amber1", DOB = DateTime.Parse("12/23/1971") });
empList.Add(new Employee() { ID = 9, FName = "Kathy1", DOB = DateTime.Parse("11/15/1976") });
empList.Add(new Employee() { ID = 10, FName = "Lena1", DOB = DateTime.Parse("05/11/1978") });
empList.Add(new Employee() { ID = 11, FName = "John2", DOB = DateTime.Parse("12/11/1971") });
int TotalCount = empList.Count();
var pgNo = currentPage;
var pgRec = 10;
empList = empList.Skip((pgNo - 1) * pgRec).Take(pgRec).ToList();
Gv1.DataSource = empList;
Gv1.DataBind();
generatePager(TotalCount, pgRec, pgNo);
}
public void generatePager(int totalRowCount, int pageSize, int currentPage)
{
int totalLinkInPage = 3;
int totalPageCount = (int)Math.Ceiling((decimal)totalRowCount / pageSize);
int startPageLink = Math.Max(currentPage - (int)Math.Floor((decimal)totalLinkInPage / 2), 1);
int lastPageLink = Math.Min(startPageLink + totalLinkInPage - 1, totalPageCount);
if ((startPageLink + totalLinkInPage - 1) > totalPageCount)
{
lastPageLink = Math.Min(currentPage + (int)Math.Floor((decimal)totalLinkInPage / 2), totalPageCount);
startPageLink = Math.Max(lastPageLink - totalLinkInPage + 1, 1);
}
List<ListItem> pageLinkContainer = new List<ListItem>();
if (startPageLink != 1)
{
int prevcounts = currentPage - 1;
pageLinkContainer.Add(new ListItem("First", prevcounts.ToString(), currentPage != 1));
}
for (int i = startPageLink; i <= lastPageLink; i++)
{
pageLinkContainer.Add(new ListItem(i.ToString(), i.ToString(), currentPage != i));
}
if (lastPageLink != totalPageCount)
{
int Nextcounts = currentPage + 1;
pageLinkContainer.Add(new ListItem("Last", Nextcounts.ToString(), currentPage != totalPageCount));
}
dlPager.DataSource = pageLinkContainer;
dlPager.DataBind();
}
protected void dlPager_ItemCommand(object source, DataListCommandEventArgs e)
{
if (SomethingClicked != null)
{
SomethingClicked(source, e);
if (e.CommandName == "PageNo")
{
BindGrid(Convert.ToInt32(e.CommandArgument));
}
}
}
class Employee
{
public int ID { get; set; }
public string FName { get; set; }
public DateTime DOB { get; set; }
}
}
}
I need it urgent,how to accomplish this,is any possibilities by using Delegates or any wayz,if so how to do that.
Help me with this.
Thanks in Advance
I am dynamically calling a usercontrol,
my issue is,when i click the paging button,the control is not loading (i need to use custom paging not built in paging)
Here is the code:
Default.aspx
------------------
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="DynamicControls._Default" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:ScriptManager ID="Sc1" runat="server">
</asp:ScriptManager>
<table>
<tr>
<td>
<telerik:RadTabStrip runat="server" ID="rdTabMessages" Skin="MetroTouch" EnableEmbeddedSkins="False"
CssClass="Tabcontrols_left" MultiPageID="RadMultiPage1" Orientation="VerticalLeft"
SelectedIndex="0" OnTabClick="tabClick">
<Tabs>
<telerik:RadTab TabIndex="0" CssClass="appointments" Text="Control1">
</telerik:RadTab>
<telerik:RadTab TabIndex="1" CssClass="appointments" Text="Control2">
</telerik:RadTab>
<telerik:RadTab TabIndex="2" CssClass="appointments" Text="Control3">
</telerik:RadTab>
</Tabs>
</telerik:RadTabStrip>
</td>
<td>
<telerik:RadMultiPage runat="server" ID="RadMultiPage1" SelectedIndex="0" CssClass="Tacontrols_right">
<telerik:RadPageView runat="server" ID="RadPageView1">
<asp:Panel ID="pnlConfiguration" runat="server">
This is Control1
</asp:Panel>
</telerik:RadPageView>
<telerik:RadPageView runat="server" ID="RadPageView2">
<asp:Panel ID="pnlWebPages" runat="server">
This is Control2
</asp:Panel>
</telerik:RadPageView>
<telerik:RadPageView runat="server" ID="RadPageView3">
<asp:Panel ID="pnlTestimonial" runat="server">
</asp:Panel>
</telerik:RadPageView>
</telerik:RadMultiPage>
</td>
</tr>
</table>
</asp:Content>
CodeBehind
----------------
protected void tabClick(object sender, RadTabStripEventArgs e)
{
if (e.Tab.TabIndex == 0)
{
//e.Tab.Selected = true;
}
if (e.Tab.TabIndex == 1)
{
}
if (e.Tab.TabIndex == 2)
{
pnlTestimonial.Controls.Clear();
string controlPath = "~/Controls/RadSchedulerCS.ascx";
RadSchedulerCS uc = (RadSchedulerCS)LoadControl(controlPath);
uc.ID = "RadScheduler";
uc.BindGrid(1);
pnlTestimonial.Controls.Add(uc);
//if (uc != null)
//{
// DataList dlPager = (DataList)uc.FindControl("dlPager");
// if (dlPager != null)
// {
// LinkButton lnkPageNo = (LinkButton)dlPager.FindControl("lnkPageNo");
// dlPager.ItemCommand += new DataListCommandEventHandler(dlPager_ItemCommand);
// }
//}
}
}
protected void dlPager_ItemCommand(object source, DataListCommandEventArgs e)
{
pnlTestimonial.Controls.Clear();
string controlPath = "~/Controls/RadSchedulerCS.ascx";
RadSchedulerCS uc = (RadSchedulerCS)LoadControl(controlPath);
uc.ID = "RadScheduler";
uc.BindGrid(1);
pnlTestimonial.Controls.Add(uc);
}
RadSchedulerCS.ascx
---------------------------
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RadSchedulerCS.ascx.cs" Inherits="DynamicControls.Controls.RadSchedulerCS" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<asp:GridView ID="Gv1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="ID">
<ItemTemplate>
<asp:Label ID="lblID" runat="server" Text='<%#Eval("ID") %>' Visible="true"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblName" runat="server" Text='<%# Eval("FName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="DOB">
<ItemTemplate>
<asp:Label ID="lblDOB" runat="server" Text='<%# Eval("DOB") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:DataList CellPadding="5" RepeatDirection="Horizontal" runat="server" ID="dlPager"
OnItemCommand="dlPager_ItemCommand" >
<ItemTemplate>
<asp:LinkButton Enabled='<%#Eval("Enabled") %>' runat="server" ID="lnkPageNo" Text='<%#Eval("Text") %>'
CommandArgument='<%#Eval("Value") %>' CommandName="PageNo" CausesValidation="false"></asp:LinkButton>
</ItemTemplate>
</asp:DataList>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace DynamicControls.Controls
{
public partial class RadSchedulerCS : System.Web.UI.UserControl
{
#region DECLRATIONS
public delegate void MyCustomHandler(object sender, EventArgs e); //This is for button click
public event MyCustomHandler SomethingClicked;
#endregion
protected void Page_PreRender(object sender, EventArgs e)
{
// Workaround to prevent clicking twice on the pager to have results displayed properly
this.Gv1.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrid(1);
}
}
public void BindGrid(int currentPage)
{
List<Employee> empList = new List<Employee>();
empList.Add(new Employee() { ID = 1, FName = "John", DOB = DateTime.Parse("12/11/1971") });
empList.Add(new Employee() { ID = 2, FName = "Mary", DOB = DateTime.Parse("01/17/1961") });
empList.Add(new Employee() { ID = 3, FName = "Amber", DOB = DateTime.Parse("12/23/1971") });
empList.Add(new Employee() { ID = 4, FName = "Kathy", DOB = DateTime.Parse("11/15/1976") });
empList.Add(new Employee() { ID = 5, FName = "Lena", DOB = DateTime.Parse("05/11/1978") });
empList.Add(new Employee() { ID = 6, FName = "John1", DOB = DateTime.Parse("12/11/1971") });
empList.Add(new Employee() { ID = 7, FName = "Mary1", DOB = DateTime.Parse("01/17/1961") });
empList.Add(new Employee() { ID = 8, FName = "Amber1", DOB = DateTime.Parse("12/23/1971") });
empList.Add(new Employee() { ID = 9, FName = "Kathy1", DOB = DateTime.Parse("11/15/1976") });
empList.Add(new Employee() { ID = 10, FName = "Lena1", DOB = DateTime.Parse("05/11/1978") });
empList.Add(new Employee() { ID = 11, FName = "John2", DOB = DateTime.Parse("12/11/1971") });
int TotalCount = empList.Count();
var pgNo = currentPage;
var pgRec = 10;
empList = empList.Skip((pgNo - 1) * pgRec).Take(pgRec).ToList();
Gv1.DataSource = empList;
Gv1.DataBind();
generatePager(TotalCount, pgRec, pgNo);
}
public void generatePager(int totalRowCount, int pageSize, int currentPage)
{
int totalLinkInPage = 3;
int totalPageCount = (int)Math.Ceiling((decimal)totalRowCount / pageSize);
int startPageLink = Math.Max(currentPage - (int)Math.Floor((decimal)totalLinkInPage / 2), 1);
int lastPageLink = Math.Min(startPageLink + totalLinkInPage - 1, totalPageCount);
if ((startPageLink + totalLinkInPage - 1) > totalPageCount)
{
lastPageLink = Math.Min(currentPage + (int)Math.Floor((decimal)totalLinkInPage / 2), totalPageCount);
startPageLink = Math.Max(lastPageLink - totalLinkInPage + 1, 1);
}
List<ListItem> pageLinkContainer = new List<ListItem>();
if (startPageLink != 1)
{
int prevcounts = currentPage - 1;
pageLinkContainer.Add(new ListItem("First", prevcounts.ToString(), currentPage != 1));
}
for (int i = startPageLink; i <= lastPageLink; i++)
{
pageLinkContainer.Add(new ListItem(i.ToString(), i.ToString(), currentPage != i));
}
if (lastPageLink != totalPageCount)
{
int Nextcounts = currentPage + 1;
pageLinkContainer.Add(new ListItem("Last", Nextcounts.ToString(), currentPage != totalPageCount));
}
dlPager.DataSource = pageLinkContainer;
dlPager.DataBind();
}
protected void dlPager_ItemCommand(object source, DataListCommandEventArgs e)
{
if (SomethingClicked != null)
{
SomethingClicked(source, e);
if (e.CommandName == "PageNo")
{
BindGrid(Convert.ToInt32(e.CommandArgument));
}
}
}
class Employee
{
public int ID { get; set; }
public string FName { get; set; }
public DateTime DOB { get; set; }
}
}
}
I need it urgent,how to accomplish this,is any possibilities by using Delegates or any wayz,if so how to do that.
Help me with this.
Thanks in Advance