//Master Page Code Behind
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class MasterPage : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
//Web Page Code Behind
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using Telerik.Web.UI;
public partial class HierarchyRadGrd : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
}
myHomeContent.Controls.Add(GetBandRadDock(2, 3, "Plan Details"));
if (ScriptManager.GetCurrent(this).IsInAsyncPostBack)
{
string controlPath = string.Empty;
string sourceid = "";
try
{
if (ScriptManager.GetCurrent(this).AsyncPostBackSourceElementID.Contains("$"))
sourceid = ScriptManager.GetCurrent(this).AsyncPostBackSourceElementID.Split('$')[2];
else
sourceid = ScriptManager.GetCurrent(this).AsyncPostBackSourceElementID.Split('_')[2];
controlPath = "UserControlRadGrid.ascx";
LoadUserControl(sourceid);
}
catch (IndexOutOfRangeException ExoutOf)
{
}
}
}
protected void LoadUserControl(string _BandId)
{
string SourceString = "";
string updateControl = "";
if (ScriptManager.GetCurrent(this).AsyncPostBackSourceElementID.Contains("$"))
SourceString = ScriptManager.GetCurrent(this).AsyncPostBackSourceElementID;
else
SourceString = ScriptManager.GetCurrent(this).AsyncPostBackSourceElementID;
string IdVal = SourceString;
string ajpCtrl = "UpdatePanel3";
string _sActualPath = SourceString;
AddControl(_sActualPath, ajpCtrl, "UserControlRadGrid.ascx", _BandId);
}
protected void AddControl(string sourcedock, string ajaxp, string path, string _sBandId)
{
RadDock SourceDock = this.FindControl(sourcedock) as RadDock;
UpdatePanel SourcePanel = (UpdatePanel)SourceDock.ContentContainer.FindControl(ajaxp);
SourcePanel.ContentTemplateContainer.Controls.Clear();
UserControl mycon = (UserControl)LoadControl(path);
mycon.ID = "DC" + _sBandId;
switch (_sBandId)
{
case "3":
((UserControlRadGrid)mycon)._ShowBand = false;
break;
}
SourcePanel.ContentTemplateContainer.Controls.Add(mycon);
}
private RadDock GetBandRadDock(int Sequence, int _iBandId, string _sBandTitle)
{
RadDock _radDock = new RadDock();
_radDock.CommandsAutoPostBack = true;
_radDock.DockMode = DockMode.Docked;
_radDock.DefaultCommands = Telerik.Web.UI.Dock.DefaultCommands.ExpandCollapse;
_radDock.Command += new DockCommandEventHandler(_radDock_Command);
_radDock.OnClientCommand = "OnDockExpand";
_radDock.ForbiddenZones = new string[] { "DockZone" };
_radDock.DockMode = DockMode.Default;
_radDock.Collapsed = true;
_radDock.ExpandText = "Loading...";
_radDock.EnableAnimation = true;
_radDock.Title = _sBandTitle;
_radDock.Font.Bold = true;
_radDock.ID = _iBandId.ToString();
UpdatePanel uPanel = new UpdatePanel();
uPanel.ID = "UpdatePanel" + _iBandId.ToString();
uPanel.UpdateMode = UpdatePanelUpdateMode.Conditional;
uPanel.RenderMode = UpdatePanelRenderMode.Inline;
AsyncPostBackTrigger oTrigger = new AsyncPostBackTrigger();
oTrigger.ControlID = _radDock.ID;
uPanel.Triggers.Add(oTrigger);
Label oLabel = new Label();
oLabel.Text = "Loading....";
oLabel.ID = "ldng";
uPanel.ContentTemplateContainer.Controls.Add(oLabel);
_radDock.ContentContainer.Controls.Add(uPanel);
return _radDock;
}
void _radDock_Command(object sender, DockCommandEventArgs e)
{
Control _DynamicControl = new Control();
RadDock oDock = new RadDock();
oDock = sender as RadDock;
oDock.AutoPostBack = false;
oDock.CommandsAutoPostBack = false;
UpdatePanel uPanel = new UpdatePanel();
string uId = "UpdatePanel" + oDock.ID;
uPanel = (UpdatePanel)oDock.ContentContainer.FindControl(uId);
uPanel.ContentTemplateContainer.Controls.Clear();
int _iBandId = Convert.ToInt32(oDock.ID);
if (oDock.Collapsed)
{
Label oLabel = new Label();
oLabel.Text = "Loading....";
uPanel.Controls.Clear();
uPanel.Controls.Add(oLabel);
}
else
{
switch (_iBandId)
{
case 3:
_DynamicControl = LoadControl("UserControlRadGrid.ascx");
_DynamicControl.ID = "DC3";
_DynamicControl.GetType().GetProperty("ShowBand").SetValue(_DynamicControl, false, null);
break;
}
uPanel.ContentTemplateContainer.Controls.Add(_DynamicControl);
}
}
public void RaisePostBackEvent(string eventArgument) { }
}
//User Control Code Behind
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using Telerik.Web.UI;
public partial class UserControlRadGrid : System.Web.UI.UserControl
{
private SqlConnection _con;
private SqlDataAdapter _adp;
private static DataTable _dt;
public bool _ShowBand = true;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
RadGrid1.DataSource = BindData();
RadGrid1.DataBind();
}
RadGrid1.DataSource = BindData();
RadGrid1.DataBind();
}
public DataTable BindData()
{
try
{
_con = new SqlConnection(ConfigurationManager.ConnectionStrings["ShopConnectionString"].ConnectionString);
_adp = new SqlDataAdapter("SELECT * FROM Shop", _con);
_dt = new DataTable();
_adp.Fill(_dt);
}
catch (Exception e)
{
Response.Write(e.Message.ToString());
}
return _dt;
}
protected void RadGrid1_DetailTableDataBind(object source, GridDetailTableDataBindEventArgs e)
{
GridDataItem dataItem = (GridDataItem)e.DetailTableView.ParentItem;
switch (e.DetailTableView.Name)
{
case "Category":
{
string _shopId = dataItem.GetDataKeyValue("ShopID").ToString();
e.DetailTableView.DataSource = GetNextLevelCategory(_shopId);
break;
}
case "Product":
{
string _categoryID = dataItem.GetDataKeyValue("CategoryID").ToString();
e.DetailTableView.DataSource = GetNextLevelProduct(_categoryID);
break;
}
}
}
protected DataTable GetNextLevelCategory(string _shopId)
{
try
{
_con = new SqlConnection(ConfigurationManager.ConnectionStrings["ShopConnectionString"].ConnectionString);
_adp = new SqlDataAdapter("SELECT * FROM Category WHERE ShopId=" + _shopId, _con);
_dt = new DataTable();
_adp.Fill(_dt);
}
catch (Exception e)
{
Response.Write(e.Message.ToString());
}
return _dt;
}
protected DataTable GetNextLevelProduct(string _categoryID)
{
try
{
_con = new SqlConnection(ConfigurationManager.ConnectionStrings["ShopConnectionString"].ConnectionString);
_adp = new SqlDataAdapter("SELECT * FROM Products WHERE CategoryId=" + _categoryID, _con);
_dt = new DataTable();
_adp.Fill(_dt);
}
catch (Exception e)
{
Response.Write(e.Message.ToString());
}
return _dt;
}
}
<!--Master Page--><%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %><%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"> <title>Untitled Page</title></head><body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" EnableScriptGlobalization="true" AsyncPostBackTimeout="600" ScriptMode="Release"/> <div> <asp:contentplaceholder id="ContentPlaceHolder1" runat="server"> </asp:contentplaceholder> </div> </form></body></html><!--Web Page--><%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="HierarchyRadGrd.aspx.cs" Inherits="HierarchyRadGrd" Title="Untitled Page" %><%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %><%@ Register Src="UserControlRadGrid.ascx" TagName="PlanDetailsUCSample" TagPrefix="control" %><asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"><script type="text/javascript">function OnDockExpand(sender,args){ if(sender._collapsed == true) { args._cancel = true; } else { if(navigator.appName != "Netscape") { if(sender._contentContainer.childNodes[0].childNodes.length > 1) args.set_cancel(true); } else { if(sender._contentContainer.children[0].children.length > 1) args.set_cancel(true); } }}</script><telerik:RadDockLayout ID="dckLayout" runat="server"> <telerik:RadDockZone ID="myHomeContent" runat="server" FitDocks="true" Font-Bold="true" BorderStyle="None" Orientation="Vertical"> </telerik:RadDockZone></telerik:RadDockLayout> <center> <table cellpadding="0" cellspacing="0" width="97%"> <tr> <td> <control:plandetailsucsample id="PlanDetailsUCSample" runat="server" /> </td> </tr> </table> </center> <br /> <br /> </asp:Content><!--User Control--><%@ Control Language="C#" AutoEventWireup="true" CodeFile="UserControlRadGrid.ascx.cs" Inherits="UserControlRadGrid" %><%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %><%--<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RadGrid1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGrid1" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings></telerik:RadAjaxManager>--%><telerik:RadGrid ID="RadGrid1" runat="server" Width="60%" AutoGenerateColumns="false" OnDetailTableDataBind="RadGrid1_DetailTableDataBind" RegisterWithScriptManager="true"> <MasterTableView DataKeyNames="ShopID"> <Columns> <telerik:GridBoundColumn HeaderText="ShopID" DataField="ShopID"> </telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="ShopName" DataField="ShopName"> </telerik:GridBoundColumn> </Columns> <DetailTables> <telerik:GridTableView DataKeyNames="CategoryID" Name="Category"> <Columns> <telerik:GridBoundColumn HeaderText="CategoryID" DataField="CategoryID"> </telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="CategoryName" DataField="CategoryName"> </telerik:GridBoundColumn> </Columns> <DetailTables> <telerik:GridTableView Name="Product"> <Columns> <telerik:GridBoundColumn HeaderText="ProductID" DataField="ProductID"> </telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="ProductName" DataField="ProductName"> </telerik:GridBoundColumn> </Columns> </telerik:GridTableView> </DetailTables> </telerik:GridTableView> </DetailTables> </MasterTableView></telerik:RadGrid>Hi,
I am loading a Hierarchical RadGrid inside a dynamically created RadDock, and the RadGrid is inside a user control. So when the RadDock is expanded the usercontrol(with the RadGrid) is loaded. And on expanding the Hierarchical RadGrid the next level of items is not shown. This is because of ispostback property which is always true for the usercontrol. And so the RadGrid inside the usercontrol is creating problem. It is working fine for a plain grid without any levels, but i am in need of using a Hierarchical RadGrid. Would appreciate if any help is provided for this. I want to know is that scenario possible or not and the way for doing it if possible. Thank you. Attaching the code below.