I have been working on a SharePoint application page that has a RadGrid on it, I've finally managed to get it displaying more or less how i want it, but the cell alignment seems a little odd, and when I try to add a skin it gives me an error saying that the skin wasn't found or something like that. I've attached the aspx and codebehind file, and also a screen of how it is displaying now, I would appreciate any help.
Thanks,
Alex
<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/_layouts/application.master" CodeBehind="~/Pages/VersionHistory.aspx.cs" Inherits="BlackBlade.ListActions.DocumentSectionManager.Monitor.VersionHistory, BlackBlade.ListActions.DocumentSectionManager.Monitor,Version=1.0.0.0,Culture=neutral,PublicKeyToken=932c3000eeb6dd9c" %><%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %><%@ Register Assembly="Telerik.Web.UI, Version=2008.3.1125.20, Culture=neutral, PublicKeyToken=121fae78165ba3d4" Namespace="Telerik.Web.UI" TagPrefix="telerik" %><%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TagPrefix="cc1" %><asp:Content ID="Main" runat="server" contentplaceholderid="PlaceHolderMain" > <telerik:RadScriptManager ID="RadScriptManager1" runat="server" /> <!-- content start --> <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" CssClass=RadGrid runat="server" OnColumnCreated="RadGrid1_ColumnCreated" OnItemCreated="RadGrid1_ItemCreated" OnItemDataBound="RadGrid1_ItemDataBound"> <MasterTableView CssClass=rgClipCells HierarchyDefaultExpanded="true" HierarchyLoadMode="Client" AllowSorting="true" DataKeyNames="GUID, ParentGUID" Width="100%"> <SelfHierarchySettings ParentKeyName="ParentGUID" KeyName="GUID" /> </MasterTableView> <ClientSettings AllowExpandCollapse="true" /> </telerik:RadGrid> <!-- content end --> </asp:Content><asp:Content ID="PageTitle" runat="server" contentplaceholderid="PlaceHolderPageTitle" > Version History</asp:Content><asp:Content ID="PageTitleInTitleArea" runat="server" contentplaceholderid="PlaceHolderPageTitleInTitleArea" > BlackBlade Version History</asp:Content>using System;using Telerik.Web.UI;using Microsoft.SharePoint;using System.Web.UI.WebControls;using System.Web.UI;using System.Reflection;using System.Collections.Generic;using Microsoft.SharePoint.WebControls;using System.Data;namespace BlackBlade.ListActions.DocumentSectionManager.Monitor{ public partial class VersionHistory : LayoutsPageBase { private DataTable dataTable = new DataTable(); protected void RadGrid1_ColumnCreated(object sender, GridColumnCreatedEventArgs e) { if (e.Column is GridExpandColumn) { e.Column.Visible = false; } else if (e.Column is GridBoundColumn) { e.Column.HeaderStyle.Width = Unit.Pixel(100); } } protected override void OnLoad(EventArgs e) { try { base.OnLoad(e); string strItemId = this.Request["ItemID"]; string strListId = this.Request["ListID"]; SPWeb site = this.Web; SPList list = site.Lists[new Guid(strListId)]; SPListItem item = list.GetItemById(Convert.ToInt32(strItemId)); ColumnSetup(); VersionCollectionTree tree = new VersionCollectionTree(item); PopulateData(tree.headers[0], "root"); RadGrid1.DataSource = dataTable; RadGrid1.MasterTableView.FilterExpression = "ParentGUID = 'root'"; } catch { } } protected override void OnPreRenderComplete(EventArgs e) { base.OnPreRenderComplete(e); HideExpandColumnRecursive(RadGrid1.MasterTableView); RadGrid1.MasterTableView.GetColumn("GUID").Visible = false; RadGrid1.MasterTableView.GetColumn("ParentGUID").Visible = false; } public void HideExpandColumnRecursive(GridTableView tableView) { GridItem[] nestedViewItems = tableView.GetItems(GridItemType.NestedView); foreach (GridNestedViewItem nestedViewItem in nestedViewItems) { foreach (GridTableView nestedView in nestedViewItem.NestedTableViews) { nestedView.Style["border"] = "0"; nestedView.GetColumn("GUID").Visible = false; nestedView.GetColumn("ParentGUID").Visible = false; Button MyExpandCollapseButton = (Button)nestedView.ParentItem.FindControl("MyExpandCollapseButton"); if (nestedView.Items.Count == 0) { if (MyExpandCollapseButton != null) { MyExpandCollapseButton.Style["visibility"] = "hidden"; } nestedViewItem.Visible = false; } else { if (MyExpandCollapseButton != null) { MyExpandCollapseButton.Style.Remove("visibility"); } } if (nestedView.HasDetailTables) { HideExpandColumnRecursive(nestedView); } } } } protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e) { CreateExpandCollapseButton(e.Item, "Title"); if (e.Item is GridHeaderItem && e.Item.OwnerTableView != RadGrid1.MasterTableView) { e.Item.Style["display"] = "none"; } if (e.Item is GridNestedViewItem) { e.Item.Cells[0].Visible = false; } } protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) { CreateExpandCollapseButton(e.Item, "Title"); } public void CreateExpandCollapseButton(GridItem item, string columnUniqueName) { if (item is GridDataItem) { if (item.FindControl("MyExpandCollapseButton") == null) { Button button = new Button(); button.Click += new EventHandler(button_Click); button.CommandName = "ExpandCollapse"; button.CssClass = (item.Expanded) ? "rgCollapse" : "rgExpand"; button.ID = "MyExpandCollapseButton"; if (item.OwnerTableView.HierarchyLoadMode == GridChildLoadMode.Client) { string script = String.Format(@"$find(""{0}"")._toggleExpand(this, event); return false;", item.Parent.Parent.ClientID); button.OnClientClick = script; } int level = item.ItemIndexHierarchical.Split(':').Length; if (level > 1) { button.Style["margin-left"] = level * 10 + "px"; } TableCell cell = ((GridDataItem)item)[columnUniqueName]; cell.Controls.Add(button); cell.Controls.Add(new LiteralControl(" ")); cell.Controls.Add(new LiteralControl(((GridDataItem)item)[columnUniqueName].Text.ToString())); } } } void button_Click(object sender, EventArgs e) { ((Button)sender).CssClass = (((Button)sender).CssClass == "rgExpand") ? "rgCollapse" : "rgExpand"; } private void ColumnSetup() { dataTable.Columns.Add("Title", typeof(string)); dataTable.Columns.Add("Version"); dataTable.Columns.Add("Modified"); dataTable.Columns.Add("User"); dataTable.Columns.Add("Size"); dataTable.Columns.Add("Comment"); dataTable.Columns.Add("GUID", typeof(string)); dataTable.Columns.Add("ParentGUID", typeof(string)); } private void PopulateData(VersionCollectionTree.Node node, string parentGUID) { DataRow row = dataTable.NewRow(); string GUID = node.versionCollection.latest.file.UniqueId.ToString(); row["GUID"] = GUID; row["ParentGUID"] = parentGUID; row["Title"] = node.versionCollection.latest.file.Name; row["Version"] = node.versionCollection.latest.versionLabel; row["Modified"] = node.versionCollection.latest.created; row["User"] = node.versionCollection.latest.user.Name; row["Size"] = node.versionCollection.latest.size; row["Comment"] = node.versionCollection.latest.comment; dataTable.Rows.Add(row); if (node.hasChildren) { foreach (VersionCollectionTree.Node child in node.children) { PopulateData(child, GUID); } } } }}Alex
