Imports
Telerik.WinControls.UI
Public
Class
Form1
Private
Sub
Button1_Click(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
Button1.Click
'clear all data (since we have to click twice to see the data)
gridReview.Columns.Clear()
gridReview.Rows.Clear()
'set up columns
gridReview.Columns.Add(
New
GridViewTextBoxColumn(
"ID"
))
gridReview.Columns.Add(
New
GridViewTextBoxColumn(
"Employee"
))
gridReview.Columns.Add(
New
GridViewTextBoxColumn(
"Code"
))
gridReview.Columns.Add(
New
GridViewTextBoxColumn(
"Total Hours"
))
gridReview.Columns.Add(
New
GridViewCheckBoxColumn(
"Review"
))
'setup some grid proerties
gridReview.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill
gridReview.AllowAddNewRow =
False
gridReview.AllowDeleteRow =
False
gridReview.ShowGroupPanel =
False
gridReview.Columns(0).
ReadOnly
=
True
gridReview.Columns(1).
ReadOnly
=
True
gridReview.Columns(2).
ReadOnly
=
True
'load sample data
gridReview.Rows.Add(1111,
"John Smith"
, 423, 40.2,
False
)
gridReview.Rows.Add(2222,
"Jane Doe"
, 421, 10.2,
False
)
gridReview.Rows.Add(3333,
"Larry Smith"
, 423, 23.5,
False
)
gridReview.Rows.Add(4444,
"Lori Smith"
, 425, 26.1,
False
)
'create the hierarchical grid
Dim
template
As
New
GridViewTemplate()
'setup hierarchical grid columns
Dim
id
As
New
GridViewTextBoxColumn(
"ID"
)
Dim
shiftdate
As
New
GridViewTextBoxColumn(
"DisplayDate"
)
Dim
in1
As
New
GridViewTextBoxColumn(
"In1"
)
Dim
out1
As
New
GridViewTextBoxColumn(
"Out1"
)
Dim
hours
As
New
GridViewTextBoxColumn(
"Hours"
)
'setup some hierarchical grid properties
template.Columns.AddRange(id, shiftdate, in1, out1, hours)
template.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill
template.AllowAddNewRow =
False
template.AllowDeleteRow =
False
template.AllowEditRow =
False
gridReview.Templates.Add(template)
template.HierarchyDataProvider =
New
GridViewEventDataProvider(template)
'not specified relation as its on-demand.
'code will be put in gridReview_RowSourceNeeded
End
Sub
Private
Sub
Form1_Load(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
Handles
Me
.Load
AddHandler
gridReview.RowSourceNeeded,
AddressOf
gridReview_RowSourceNeeded
End
Sub
Private
Sub
gridReview_RowSourceNeeded(
ByVal
sender
As
Object
,
ByVal
e
As
GridViewRowSourceNeededEventArgs)
MessageBox.Show(
"Show some data"
)
End
Sub
End
Class
private
void rgvEjendomme_ViewCellFormatting(object sender, CellFormattingEventArgs e)
{
GridGroupExpanderCellElement cell = e.CellElement as GridGroupExpanderCellElement;
if (cell != null && e.CellElement.RowElement is GridDataRowElement)
{
cell.Expander.Visibility = Telerik.WinControls.ElementVisibility.Visible;
cell.Expander.ToolTipText = "Matrikler: " + ((Ejendom)e.Row.DataBoundItem).Matrikler.Count.ToString();
}
if (e.CellElement is GridDetailViewCellElement && e.CellElement.Children.Count != 0)
{
var pageView = e.CellElement.Children[0] as RadPageViewStripElement;
if (pageView == null)
{
return;
}
}
}
The help file mentions also that 'For direct access to the tree view XML as text use the TreeViewXML property.'. How is this implemented concretely?
Best regards,
Alain Cavenaile
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