Hi,
I found that I could not edit the Self-referencing hierarchy and there is filtering bug in Self-referencing hierarchy too!Here is the video demo and my code:
http://www.youtube.com/watch?v=X_HrlJJSgko
I found that I could not edit the Self-referencing hierarchy and there is filtering bug in Self-referencing hierarchy too!Here is the video demo and my code:
http://www.youtube.com/watch?v=X_HrlJJSgko
| <form id="form1" runat="server"> |
| <asp:ScriptManager ID="ScriptManager1" runat="server"> |
| </asp:ScriptManager> |
| <div> |
| <asp:AccessDataSource ID="adsCategories" runat="server" |
| DataFile="~/App_Data/dbmx.mdb" |
| SelectCommand="SELECT * FROM [Categories] where isDelete = False"></asp:AccessDataSource> |
| <asp:AccessDataSource ID="adsProducts" runat="server" |
| DataFile="~/App_Data/dbmx.mdb" |
| SelectCommand="SELECT * FROM [Products] where isDelete = False"></asp:AccessDataSource> |
| <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" DataSourceID="adsCategories" |
| GridLines="None" AllowFilteringByColumn="True" AllowPaging="True" |
| AutoGenerateEditColumn="True" Skin="Office2007"> |
| <MasterTableView DataKeyNames="categoryID,categoryParentID" HierarchyLoadMode="Client" DataSourceID="adsCategories" HierarchyDefaultExpanded="False"> |
| <SelfHierarchySettings KeyName="categoryID" ParentKeyName="categoryParentID" /> |
| <RowIndicatorColumn> |
| <HeaderStyle Width="20px"></HeaderStyle> |
| </RowIndicatorColumn> |
| <ExpandCollapseColumn> |
| <HeaderStyle Width="20px"></HeaderStyle> |
| </ExpandCollapseColumn> |
| </MasterTableView> |
| <ClientSettings> |
| <Scrolling AllowScroll="True" UseStaticHeaders="True" /> |
| </ClientSettings> |
| </telerik:RadGrid> |
| </div> |
| </form> |
| Protected Sub RadGrid1_ColumnCreated(ByVal sender As Object, ByVal e As GridColumnCreatedEventArgs) Handles RadGrid1.ColumnCreated |
| If TypeOf e.Column Is GridExpandColumn Then |
| e.Column.Visible = False |
| ElseIf TypeOf e.Column Is GridBoundColumn Then |
| e.Column.HeaderStyle.Width = Unit.Pixel(100) |
| End If |
| End Sub |
| Public Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load |
| If Assembly.GetAssembly(GetType(ScriptManager)).FullName.IndexOf("3.5") <> -1 Then |
| RadGrid1.MasterTableView.FilterExpression = "it[""categoryParentID""] = Convert.DBNull" |
| Else |
| RadGrid1.MasterTableView.FilterExpression = "categoryParentID IS NULL" |
| End If |
| End Sub |
| Public Sub Page_PreRenderComplete(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.PreRenderComplete |
| HideExpandColumnRecursive(RadGrid1.MasterTableView) |
| End Sub |
| Public Sub HideExpandColumnRecursive(ByVal tableView As GridTableView) |
| Dim nestedViewItems As GridItem() = tableView.GetItems(GridItemType.NestedView) |
| For Each nestedViewItem As GridNestedViewItem In nestedViewItems |
| For Each nestedView As GridTableView In nestedViewItem.NestedTableViews |
| nestedView.Style("border") = "1" |
| Dim MyExpandCollapseButton As Button = DirectCast(nestedView.ParentItem.FindControl("MyExpandCollapseButton"), Button) |
| If nestedView.Items.Count = 0 Then |
| If Not MyExpandCollapseButton Is Nothing Then |
| MyExpandCollapseButton.Style("visibility") = "hidden" |
| End If |
| nestedViewItem.Visible = False |
| Else |
| If Not MyExpandCollapseButton Is Nothing Then |
| MyExpandCollapseButton.Style.Remove("visibility") |
| End If |
| End If |
| If nestedView.HasDetailTables Then |
| HideExpandColumnRecursive(nestedView) |
| End If |
| Next |
| Next |
| End Sub |
| Protected Sub RadGrid1_ItemCreated(ByVal sender As Object, ByVal e As GridItemEventArgs) Handles RadGrid1.ItemCreated |
| CreateExpandCollapseButton(e.Item, "categoryID") |
| If TypeOf e.Item Is GridHeaderItem AndAlso Not e.Item.OwnerTableView Is RadGrid1.MasterTableView Then |
| e.Item.Style("display") = "none" |
| End If |
| If TypeOf e.Item Is GridNestedViewItem Then |
| e.Item.Cells(0).Visible = False |
| End If |
| End Sub |
| Protected Sub RadGrid1_ItemDataBound(ByVal sender As Object, ByVal e As GridItemEventArgs) Handles RadGrid1.ItemDataBound |
| CreateExpandCollapseButton(e.Item, "categoryID") |
| End Sub |
| Public Sub CreateExpandCollapseButton(ByVal item As GridItem, ByVal columnUniqueName As String) |
| If TypeOf item Is GridDataItem Then |
| If item.FindControl("MyExpandCollapseButton") Is Nothing Then |
| Dim button As New Button() |
| AddHandler button.Click, AddressOf button_Click |
| button.CommandName = "ExpandCollapse" |
| button.CssClass = IIf((item.Expanded), "rgCollapse", "rgExpand") |
| button.ID = "MyExpandCollapseButton" |
| If item.OwnerTableView.HierarchyLoadMode = GridChildLoadMode.Client Then |
| Dim script As String = [String].Format("$find(""{0}"")._toggleExpand(this, event); return false;", item.Parent.Parent.ClientID) |
| button.OnClientClick = script |
| End If |
| Dim level As Integer = item.ItemIndexHierarchical.Split(":"c).Length |
| If level > 1 Then |
| button.Style("margin-left") = level + 10 & "px" |
| End If |
| Dim cell As TableCell = (DirectCast(item, GridDataItem))(columnUniqueName) |
| cell.Controls.Add(button) |
| cell.Controls.Add(New LiteralControl(" ")) |
| cell.Controls.Add(New LiteralControl((DirectCast(item, GridDataItem)).GetDataKeyValue(columnUniqueName).ToString())) |
| End If |
| End If |
| End Sub |
| Sub button_Click(ByVal sender As Object, ByVal e As EventArgs) |
| CType(sender, Button).CssClass = IIf((CType(sender, Button).CssClass = "rgExpand"), "rgCollapse", "rgExpand") |
| End Sub |