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 |