<telerik:RadScheduler runat="server" ID="RadScheduler1" Height="100%" AllowDelete="False" AllowEdit="False" AllowInsert="False" Skin="Office2007" StartEditingInAdvancedForm="true" SelectedView="WeekView" DayEndTime="18:00:00" DayStartTime="08:00:00" ShowFooter="false" Culture="en-GB"> <AdvancedForm Modal="true" /> <ResourceTypes> <telerik:ResourceType KeyField="Key" Name="User" TextField="Text" ForeignKeyField="ID" DataSourceID="XmlSchedulerProvider" /> </ResourceTypes> <WebServiceSettings Path="~/Models/SchedulerWebService.asmx" /> </telerik:RadScheduler>
protected void RadTreeView1_Selected(object sender, RadTreeNodeEventArgs e)
{
if (e.Node.ToolTip == "Album")
{
string albpath = "";
if (RadTreeView1.SelectedNode.GetFullPath("/") == "Sample Folder/Sample Album")
{
albpath = "~/" + "Registered_Users_Uploaded_Images" + "/" + RadTreeView1.SelectedNode.GetFullPath("/");
}
else {
albpath =
"~/" + "Registered_Users_Uploaded_Images" + "/" + uname + "/" + RadTreeView1.SelectedNode.GetFullPath("/");
}
ObjectDataSource1.SelectParameters[
"path"].DefaultValue = albpath;
// ObjectDataSource1.SelectMethod = "GetData()";
RadAjaxManager1.AjaxSettings.AddAjaxSetting(RadTreeView1, ObjectDataSource1);
RadListView1.DataSourceID =
"ObjectDataSource1";
RadListView1.Rebind();
RadAjaxManager1.AjaxSettings.AddAjaxSetting(RadTreeView1, RadListView1);
}
<asp:ObjectDataSource runat="server" ID="ObjectDataSource1" SelectMethod="GetData"
TypeName="uploadWebApp.DataProvider">
<SelectParameters>
<asp:Parameter Name="path" DefaultValue="~/Registered_Users_Uploaded_Images\dsnap1\My Albums\2010-10-16"/>
</SelectParameters>
</asp:ObjectDataSource>
=============================================
<telerik:AjaxSetting AjaxControlID="RadTreeView1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="GridView1" />
<telerik:AjaxUpdatedControl ControlID="ObjectDataSource1" />
<telerik:AjaxUpdatedControl ControlID="RadListView1" LoadingPanelID="ListViewPanel1" />
<UpdatedControls>
</telerik:AjaxSetting>
<telerik:RadGrid ID="RadGridExample" runat="server" GridLines="Both" Skin="WebBlue"> <MasterTableView AutoGenerateColumns="false" Name="Main"> <%-- This level holds items of Type1 --%> <Columns> </Columns> <DetailTables> <telerik:GridTableView Name="SubLevel1" ShowHeadersWhenNoRecords="false" AutoGenerateColumns="false"> <%-- This level holds items of Type2 --%> <Columns> </Columns> <DetailTables> <telerik:GridTableView Name="SubLevel2" ShowHeader="false" AutoGenerateColumns="false" > <%-- This level holds items of Type2 --%> <Columns> </Columns> <DetailTables> <telerik:GridTableView Name="SubLevel3" ShowHeader="false" AutoGenerateColumns="false"> <%-- This level holds items of Type2 --%> <Columns> </Columns> <DetailTables> <telerik:GridTableView Name="SubLevel4" ShowHeader="false" AutoGenerateColumns="false"> <%-- This level holds items of Type2 --%> <Columns> </Columns> </telerik:GridTableView> </DetailTables> </telerik:GridTableView> </DetailTables> </telerik:GridTableView> </DetailTables> </telerik:GridTableView> </DetailTables> </MasterTableView> </telerik:RadGrid>protected void Page_Init(object sender, EventArgs e){ IViewContainer container = this.Page as IViewContainer; if (container != null) { container.Register(this); }}IEnumerable<Tuple<Type1,IEnumerable<Tree<Type2>>>>public class Tree<TItem>{ public Tree(TItem rootItem) { root = new TreeNode<TItem>(rootItem); } public Tree(TreeNode<TItem> rootNode) { this.root = rootNode; } private TreeNode<TItem> root; public TreeNode<TItem> Root { get { return root; } }}public class TreeNode<TItem>{ public TreeNode(TItem item) { this.item = item; this.children = new List<TreeNode<TItem>>(); this.isLeaf = true; } public TreeNode(TItem item, bool isLeaf) { this.item = item; this.isLeaf = isLeaf; this.children = new List<TreeNode<TItem>>(); } public TreeNode(TItem node, IEnumerable<TItem> children) { this.item = node; this.children = new List<TreeNode<TItem>>(children.Count()); foreach (var child in children) { this.children.Add(new TreeNode<TItem>(child)); } this.isLeaf = false; } private TItem item; public TItem Item { get { return item;} } private List<TreeNode<TItem>> children; public IEnumerable<TreeNode<TItem>> Children { get { if (isLeaf) throw new InvalidOperationException("Node is set as Leaf so it can't have children"); return children; } } private bool isLeaf; public bool IsLeaf { get { return isLeaf; } set { isLeaf = value; } } public void AddChild(TItem item) { isLeaf = false; children.Add(new TreeNode<TItem>(item)); } public void AddChild(TreeNode<TItem> item) { isLeaf = false; children.Add(item); } public void AddChildren(IEnumerable<TItem> items) { isLeaf = false; foreach (var item in items) { children.Add(new TreeNode<TItem>(item)); } } public void AddChildren(IEnumerable<TreeNode<TItem>> items) { isLeaf = false; foreach (var item in items) { children.Add(item); } }}object parentDataItem = e.DetailTableView.ParentItem.DataItem;if (parentDataItem is Type1){ Type1 fac = parentDataItem as Type1; var tuple = hierarchy.Single(t => t.Item1 == fac); if (tuple.Item2 != null) { var roots = tuple.Item2.Select(tree => tree.Root); //selects IEnumerable<TreeNode<Type2>> e.DetailTableView.DataSource = roots; }}else if (parentDataItem is TreeNode<Type2>){ TreeNode<Type2> node = parentDataItem as TreeNode<Type2>; if (!node.IsLeaf) { e.DetailTableView.DataSource = node.Children; }}