This is a migrated thread and some comments may be shown as answers.

[Solved] Find Control in Self Referencing Hierarchy

1 Answer 109 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Djefri
Top achievements
Rank 1
Djefri asked on 12 Nov 2010, 08:19 AM
Hi

I have a self-referencing hierachical radGrid like in my attachement

How to find checkbox control...?

I tried to count MasterTableView.Items.count but the result is always 1.
What am I missing?

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox(RadGrid1.MasterTableView.Items.Count)
For Each item As GridItem In RadGrid1.MasterTableView.Items
If TypeOf item Is GridDataItem Then
MsgBox(item.ClientID)
End If
Next
End Sub

<telerik:RadGrid ID="RadGrid1" runat="server" OnColumnCreated="RadGrid1_ColumnCreated" Skin="Office2007" Width="70%"
            OnItemCreated="RadGrid1_ItemCreated" OnItemDataBound="RadGrid1_ItemDataBound" AutoGenerateColumns="false"
             OnNeedDataSource="RadGrid1_NeedDataSource">
            <MasterTableView HierarchyDefaultExpanded="true" HierarchyLoadMode="Client" AllowSorting="true" Name="asd" DataKeyNames="mnid, mnparent,mnnameen">
            <SelfHierarchySettings ParentKeyName="mnparent" KeyName="mnid" />
            <Columns>
                <telerik:GridBoundColumn DataField="mnnameen" HeaderText="Menu" UniqueName="mnnameen"></telerik:GridBoundColumn>
                <telerik:GridTemplateColumn UniqueName="CBoxOpenTemplateColumn" HeaderText="Open" HeaderStyle-Width="70px">
                    <ItemTemplate>
                        <asp:CheckBox id="CBoxOpen" runat="server"></asp:CheckBox>
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
                <telerik:GridTemplateColumn UniqueName="CBoxFullTemplateColumn" HeaderText="Full" HeaderStyle-Width="70px">
                    <ItemTemplate>
                        <asp:CheckBox id="CBoxFull" runat="server"></asp:CheckBox>
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
                <telerik:GridTemplateColumn UniqueName="CBoxApprovalTemplateColumn" HeaderText="Approval" HeaderStyle-Width="70px">
                    <ItemTemplate>
                        <asp:CheckBox id="CBoxApproval" runat="server"></asp:CheckBox>
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
                <telerik:GridTemplateColumn UniqueName="CBoxFavoriteTemplateColumn" HeaderText="Favorite" HeaderStyle-Width="70px">
                    <ItemTemplate>
                        <asp:CheckBox id="CBoxFavorite" runat="server"></asp:CheckBox>
                    </ItemTemplate>
                </telerik:GridTemplateColumn>
            </Columns>
            </MasterTableView>
        <ClientSettings AllowExpandCollapse="true" EnableRowHoverStyle="true">
        </ClientSettings>
        </telerik:RadGrid>


in this code I change id of the checkbox
Public Sub HideExpandColumnRecursive(ByVal tableView As GridTableView)
        Dim nestedViewItems As GridItem() = tableView.GetItems(GridItemType.NestedView)
 
        Dim itemid As String, itemidnya As String
        For Each item As GridItem In tableView.Items
            If TypeOf item Is GridDataItem Then
                Dim dataItem As GridDataItem = CType(item, GridDataItem)
                Dim mnid As String = dataItem.OwnerTableView.DataKeyValues(dataItem.ItemIndex)("mnid")
                Dim mnname As String = dataItem.OwnerTableView.DataKeyValues(dataItem.ItemIndex)("mnnameen")
                itemid = dataItem.ClientID
                Dim data() As String = Split(itemid, "__")
 
                Dim checkBoxOpen As CheckBox = TryCast(dataItem("CBoxOpenTemplateColumn").FindControl("CBoxOpen"), CheckBox)
                AddEventCbox(checkBoxOpen, "_" & data(1) & "__" & mnid & "__Open", "CheckedChanged('" & data(1) & "','Open',this)")
 
                Dim checkBoxFull As CheckBox = TryCast(dataItem("CBoxFullTemplateColumn").FindControl("CBoxFull"), CheckBox)
                AddEventCbox(checkBoxFull, "_" & data(1) & "__" & mnid & "__Full", "CheckedChanged('" & data(1) & "','Full',this)")
 
                Dim checkBoxApproval As CheckBox = TryCast(dataItem("CBoxApprovalTemplateColumn").FindControl("CBoxApproval"), CheckBox)
                AddEventCbox(checkBoxApproval, "_" & data(1) & "__" & mnid & "__Approval", "CheckedChanged('" & data(1) & "','Approval',this)")
 
                Dim checkBoxFavorite As CheckBox = TryCast(dataItem("CBoxFavoriteTemplateColumn").FindControl("CBoxFavorite"), CheckBox)
                AddEventCbox(checkBoxFavorite, "_" & data(1) & "__" & mnid & "__Favorite", "CheckedChanged('" & data(1) & "','Favorite',this)")
 
            End If
        Next
 
        For Each nestedViewItem As GridNestedViewItem In nestedViewItems
            For Each nestedView As GridTableView In nestedViewItem.NestedTableViews
                nestedView.Style("border") = "0"
 
                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

Thanks in advance for your help.

1 Answer, 1 is accepted

Sort by
0
Tsvetoslav
Telerik team
answered on 17 Nov 2010, 10:05 AM
Hello Djefri,

Going by the screen-shot you do have just one item in the MasterTableView. To get all the items in the grid, just use RadGrid1.Items collection.

Hope it helps.

Regards,
Tsvetoslav
the Telerik team
Browse the vast support resources we have to jumpstart your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.
Tags
Grid
Asked by
Djefri
Top achievements
Rank 1
Answers by
Tsvetoslav
Telerik team
Share this question
or