Hello I have created this simple bit of code that displays a hierarchial orders grid (see screen1.jpg)
Now I want to hide the +/- buttons if there are no rows (ie Order Ref 2 & 4) - Having searched the threads and copied the functions from those threads (RadGridView1_ViewCellFormatting,IsExpandable & RadGridView1_ChildViewExpanding)
It just hides them all because rowInfo.ChildRows.Count =0! (as per screen2.jpg)
Can anybody spot where I'm going wrong?
Many thanks
Terry
Public
Class
Form1
Private
Sub
Form1_Load(sender
As
Object
, e
As
System.EventArgs)
Handles
Me
.Load
Dim
myOrders =
New
BindingList(Of Order)()
Dim
myOrderLines =
New
BindingList(Of OrderLines)()
myOrders.Add(
New
Order(1,
"01/01/2011"
,
"Order for Warehouse"
))
myOrders.Add(
New
Order(2,
"03/05/2011"
,
"Order for home"
))
myOrders.Add(
New
Order(3,
"12/05/2011"
,
"Order ref xyz"
))
myOrders.Add(
New
Order(4,
"16/05/2011"
,
"Order ref abc"
))
myOrderLines.Add(
New
OrderLines(1,
"Power Supply"
))
myOrderLines.Add(
New
OrderLines(1,
"Hard Disk"
))
myOrderLines.Add(
New
OrderLines(3,
"Keyboard"
))
myOrderLines.Add(
New
OrderLines(3,
"Mouse"
))
RadGridView1.AutoGenerateHierarchy =
False
RadGridView1.AutoGenerateColumns =
True
Dim
OrderLinesTemplate
As
New
GridViewTemplate
OrderLinesTemplate.AllowAddNewRow =
False
OrderLinesTemplate.DataSource = myOrderLines
'RadGridView1.MasterTemplate.Templates.Add(RolesAndPositionTemplate)
Me
.RadGridView1.MasterTemplate.Templates.Add(OrderLinesTemplate)
'create the relation
Dim
relation
As
New
GridViewRelation(RadGridView1.MasterTemplate)
relation.RelationName =
"Order Lines"
relation.ParentColumnNames.Add(
"OrderId"
)
relation.ChildColumnNames.Add(
"OrderLineId"
)
relation.ChildTemplate = OrderLinesTemplate
Me
.RadGridView1.Relations.Add(relation)
Me
.RadGridView1.DataSource = myOrders
End
Sub
Private
Sub
RadGridView1_ViewCellFormatting(sender
As
Object
, e
As
Telerik.WinControls.UI.CellFormattingEventArgs)
Handles
RadGridView1.ViewCellFormatting
Dim
cellX
As
GridGroupExpanderCellElement = TryCast(e.CellElement, GridGroupExpanderCellElement)
If
cellX IsNot
Nothing
AndAlso
TypeOf
e.CellElement.RowElement
Is
GridDataRowElement
Then
If
Not
IsExpandable(cellX.RowInfo)
Then
cellX.Expander.Visibility = ElementVisibility.Hidden
Else
cellX.Expander.Visibility = ElementVisibility.Visible
End
If
End
If
End
Sub
Private
Function
IsExpandable(rowInfo
As
GridViewRowInfo)
As
Boolean
If
rowInfo.ChildRows IsNot
Nothing
AndAlso
rowInfo.ChildRows.Count > 0
Then
Return
True
Else
Return
False
End
If
End
Function
Private
Sub
RadGridView1_ChildViewExpanding(sender
As
Object
, e
As
Telerik.WinControls.UI.ChildViewExpandingEventArgs)
Handles
RadGridView1.ChildViewExpanding
e.Cancel =
Not
IsExpandable(e.ParentRow)
End
Sub