Private Sub btnExport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExport.Click
'LoopHierarchyRecursive(grdEmpData.MasterTableView)
grdEmpData.MasterTableView.HierarchyDefaultExpanded =
True
'grdEmpData.MasterTableView.Rebind()
grdEmpData.ExportSettings.ExportOnlyData =
True
'grdEmpData.ExportSettings.IgnorePaging = True
grdEmpData.MasterTableView.AllowPaging =
False
grdEmpData.ExportSettings.OpenInNewWindow =
True
grdEmpData.ExportSettings.FileName =
"SAPDataList"
grdEmpData.MasterTableView.ExportToExcel()
End Sub
Sub LoopHierarchyRecursive(ByVal gridTableView As GridTableView)
For Each nestedViewItem As GridNestedViewItem In gridTableView.GetItems(GridItemType.NestedView)
nestedViewItem.Expanded = True
If nestedViewItem.NestedTableViews.Length > 0 Then
'now you can access: nestedViewItem.NestedTableViews[0].Items, which will be the DataItems of this nested table
'then make recursive call
LoopHierarchyRecursive(nestedViewItem.NestedTableViews(0))
' above [0] stands for the first table in the hierarchy, since Telerik RadGrid supports multiple tables at a level
End If
Next
End Sub
Here is the structure and code:
MainGrid
MaterTableView
DetailTable
NestedViewTemplate (using nested view because each detail table row will have different datasource)
ChildGrid
<MasterTableView Name="EmployeeList" GridLines="None" DataKeyNames="SAPEmployeeNo" AllowSorting="True" ShowHeader="True">
<DetailTables>
<telerik:GridTableView DataKeyNames="EmployeeNo, CategoryId" Name="Category" Width="1050px" runat="server" PagerStyle-Position="bottom">
<NestedViewTemplate>
<telerik:RadGrid ID="EmpData" OnNeedDataSource="gridEmpData_NeedDataSource" runat="server" Width="1050px">
<ItemStyle CssClass="RadGridItem"></ItemStyle>
<AlternatingItemStyle CssClass="RadGridItem"></AlternatingItemStyle>
<ClientSettings>
<Scrolling AllowScroll="true" ScrollHeight="40px" UseStaticHeaders="true" />
</ClientSettings>
</telerik:RadGrid>
</NestedViewTemplate>
<ParentTableRelation>
<telerik:GridRelationFields DetailKeyField="EmployeeNo" MasterKeyField="EmployeeNo" />
</ParentTableRelation>
<Columns>
<telerik:GridBoundColumn DataField="EmployeeNo" UniqueName="EmployeeNo" Visible="false" />
<telerik:GridBoundColumn DataField="CategoryId" UniqueName="CategoryId" Visible="false" />
<telerik:GridBoundColumn HeaderText="" DataField="CategoryName" SortExpression="CategoryName" UniqueName="CategoryName" />
</Columns>
</telerik:GridTableView>
</DetailTables>
<Columns>
<telerik:GridTemplateColumn UniqueName="btnEdit" HeaderStyle-Width="30px" ItemStyle-Width="30px">
<ItemTemplate>
<asp:ImageButton ImageAlign=AbsBottom id="btnEditEmp" runat="server" imageurl="~/images/edit.gif" alternatetext="Edit" />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn HeaderText="EmpNo" DataField="EmployeeNo" SortExpression="EmployeeNo" UniqueName="EmployeeNo" />
<telerik:GridBoundColumn HeaderText="Last Name" DataField="LastName" SortExpression="LastName" UniqueName="LastName" />
<telerik:GridBoundColumn HeaderText="First Name" DataField="FirstName" SortExpression="FirstName" UniqueName="FirstName" />
<ExpandCollapseColumn ButtonType="ImageButton" Visible="False" UniqueName="ExpandColumn"></ExpandCollapseColumn>
</MasterTableView>
Thanks!

I would like to know how it's possible to choose which filters we need. In fact at the beginning, we have NoFilter, Contains, DoesNotContain (too much)... And I would like only Contais and EqualTo. So how it works?
Thank you.
I am attempting to add the new PRINT BUTTON within the RADGRID. It shows it I change the radgrid RenderMode to lightweight, however this changes some of my design elements and I must keep the RADGRID rendermode as "Classic" - However this eliminate the new PRINT BUTTON from showing/displaying.
How can I resolve this?
Hi ,
I am new to this radgrid . Need some help from anyone who has faced this issue. In the EditFormSetting in the radgrid i have two raddropdownlist. The functionality that i need is ..on selectionindexchange of the first dropdownlist,the contents of second dropdownlist need to be populated from a datasource. How do i achieve this? The problem i am facing is i am not able to access the dropdownlist control in the selectionchanged event of the first dropdownlist.
<EditFormSettings EditFormType="Template">
<FormTemplate>
<table style="width: 500px">
<tr>
<td>
<asp:Label ID="Label1" runat="server" Text="lblDropdown1:" Visible="true"></asp:Label>
</td>
<td class="tableCellRight" style="width: 85%">
<asp:DropDownList ID="rd_Dropdown1" runat="server" AppendDataBoundItems="True" AutoPostBack="True" Visible="true" OnSelectedIndexChanged="rd_Dropdown1_SelectedIndexChanged" DataSourceID="ds_dropdown1" DataTextField="field2" DataValueField="field1">
<Items>
<asp:ListItem runat="server" Text="--Select item--" Value="NA" />
</Items>
</asp:DropDownList>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label2" runat="server" Text="lbldropdown2:" Visible="False"></asp:Label>
</td>
<td class="tableCellRight" style="width: 85%">
<telerik:RadDropDownList ID="rd_dropdown2" runat="server" AppendDataBoundItems="True" AutoPostBack="True" DataSourceID="ds_dropdown2" DataTextField="field2" DataValueField="field1" Visible="False">
<Items>
<telerik:DropDownListItem runat="server" Text="--Select names--" Value="N/A" />
</Items>
</telerik:RadDropDownList>
</td>
</tr>
</table>
</FormTemplate>
</EditFormSettings>
<asp:SqlDataSource ID="ds_dropdown1" runat="server" ConnectionString="<%$ ConnectionStrings:xxConnectionString%>" SelectCommand="SELECT field1, field2 FROM [table1] ">
</asp:SqlDataSource>
<asp:SqlDataSource ID="ds_dropdown2" runat="server" ConnectionString="<%$ ConnectionStrings:xxConnectionString %>" SelectCommand="SELECT [field1], [field2] FROM [table1] WHERE (somecondition)">
</asp:SqlDataSource>
codebehindfile event code
protected void rd_Dropdown1_SelectedIndexChanged(object sender,EventArgs e)
{
//what code is required here to fetch or access dropdown2 control so that i bind it with suitable sqlcommand?
//RadGrid1.DataBind();
}

How must i bind to my array's to get 2 lines like Attached image file please ?
In the telerik example datasource get only one array OR it is declaratively...
THANKS for your help
Hi,
The text color of my cells is not updated when I call the Rebind() of my RadGrid.
I've implemented my logic as the following :
- I fill my grid datasource in the NeedDataSource event
- I set the style logic in the ItemDataBound event
Protected Sub RgPermisMontage_ItemDataBound(sender As Object, e As Telerik.Web.UI.GridItemEventArgs) Handles RgPermisMontage.ItemDataBound If TypeOf e.Item Is GridHeaderItem Then ''' ElseIf TypeOf e.Item Is GridGroupHeaderItem Then ''' ElseIf TypeOf e.Item Is GridDataItem Then Dim item As GridDataItem = e.Item If item("ysnDepotPrev").Text Then item("dtDepot").ForeColor = Color.FromArgb(218, 95, 37) item("dtDepot").Font.Italic = True Else item("dtDepot").ForeColor = Color.Black item("dtDepot").Font.Italic = False End If ''' End If End SubThen I update my grid source so I call the Rebind() to force the RadGrid to raise NeedDataSource event and ItemDataBound.
My cell value is well updated but the cell style not.
Do you have any ideas ?
Hi, I have a problem with my grid. This grid is showed to the user, in a popup, when he click on a link.
This is my grid:
<div id="dialog" > <telerik:RadGrid ID="RadGrid1" RenderMode="Lightweight" ClientDataSourceID="RadClientDataSource1" AllowPaging="false" AllowSorting="false" AllowFilteringByColumn="false" PageSize="5" runat="server" > <MasterTableView DataKeyNames="Name" ClientDataKeyNames="Name" > <Columns> <telerik:GridBoundColumn DataField="Name" HeaderText="Name"> </telerik:GridBoundColumn> </Columns> </MasterTableView> </ClientSettings>--%> </telerik:RadGrid></div>
and this is my RadClientDataSource:
<telerik:RadClientDataSource ID="RadClientDataSource1" runat="server" > <ClientEvents OnCustomParameter="ParameterMap" OnDataParse="Parse" /> <DataSource> <WebServiceDataSourceSettings BaseUrl="../ReportService.svc/"> <Select Url="GetFlusso" DataType="JSON" RequestType="Post" ContentType="application/json; charset=utf-8" EnableCaching="false" /> </WebServiceDataSourceSettings> </DataSource> <Schema ResponseType="JSON" > <Model> <telerik:ClientDataSourceModelField FieldName="Name" DataType="String" /> </Model> </Schema></telerik:RadClientDataSource>
This is my link (created with javascript):
"<a href='javascript: openScartiDialog(" + id + ");'><em>CLICK</em></a>"
Now, these are the functions that parse to/from my web service:
function ParameterMap(sender, args) { if (args.get_type() == "read" && args.get_data()) { var dialog = $("#dialog"); var id = dialog.id; if (id != undefined) { var request = { InputContract: { IdFlusso: id } }; args.set_parameterFormat(kendo.stringify(request)); } } else {}}function Parse(sender, args) { var response = args.get_response().Output; if (response) { if (response.length > 0) { args.set_parsedData(response); } else { var model = []; } }}
All works. My Web Service works (I have tried with other grids).
The problem is: the request on the server (performed by the RadClientDataSource, called by the RadGrid) is made on page load.
I want to avoid this, I just want that the grid is loaded, showed on the link click (indeed, I want to pass the id parameter). But I don't know how.
To be more clear, this is the rest of my implementation: the js code for showing/hiding the popup and for set the id.
$(function () { $("#dialog").dialog({ autoOpen: false, modal: true, show: "blind", hide: "blind", width: "auto", buttons: { "OK": function () { $(this).dialog("close"); }, "Annulla": function () { $(this).dialog("close"); } } });});function openScartiDialog(id) { var div = $("#dialog"); div.attr('id', id); div.dialog("open"); var grid = $telerik.findGrid("RadGrid1"); var m = grid.get_masterTableView(); m.rebind(); return false;}
