I have a Radgrid control on a page that users a master/detail table to display data. In this scenario not every master record will have a detail record so I don't want to display the No Record line item. This all works fine on the initial load of the page and grid, see image 1. When a user selects a filter such a Region or Client is when I start having problems, see image 2. All of the details rows are now displayed even it there is not data. I've tried several of the code examples online but can't seem to get them working with the filters.
<telerik:RadGrid ID="rgVendors" runat="server" Skin="Web20" DataSourceID="edsVendors" ShowStatusBar="true" AutoGenerateColumns="False" AllowSorting="True" AllowMultiRowSelection="False" AllowPaging="True" AllowAutomaticDeletes="true" GridLines="None" PageSize="25" SortingSettings-EnableSkinSortStyles="false" OnDetailTableDataBind="rgVendors_DetailTableDataBind" OnItemCommand="rgVendors_ItemCommand" OnItemEvent="rgVendors_ItemEvent" OnItemDataBound="rgVendors_ItemDataBound" OnDeleteCommand="rgVendors_DeleteCommand" OnSelectedIndexChanged="rgVendors_SelectedIndexChanged" OnPreRender="rgVendors_PreRender"> <MasterTableView DataKeyNames="ClientID,VendorID,VendorDetailID" Name="rgMaster" HierarchyLoadMode="ServerBind" HierarchyDefaultExpanded="true" HeaderStyle-BackColor="#7FA5D7" ItemStyle-BackColor="#B0C4DE" AlternatingItemStyle-BackColor="White"> <Columns> <telerik:GridButtonColumn Text="Select" UniqueName="Select" CommandName="Select"> </telerik:GridButtonColumn> <telerik:GridBoundColumn DataField="VendorDetailID" ReadOnly="true" Visible="false" UniqueName="VendorDetailID"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Client.ClientID" ReadOnly="true" UniqueName="ClientID" Visible="false"> </telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="Client Name" DataField="Client.ClientName" UniqueName="ClientName" HeaderStyle-Width="100px" ReadOnly="true"> </telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="Vendor Name" DataField="Vendor.VendorName" UniqueName="VendorName" ReadOnly="true"> </telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="Service Provided" DataField="VendorService.ServiceName" UniqueName="ServiceName" ReadOnly="true"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn HeaderText="Address" HeaderStyle-Width="150px"> <ItemTemplate> <asp:Label ID="Address" runat="server" Text='<%# Eval("Vendor.Address") %>'></asp:Label><br /> <asp:Label ID="City" runat="server" Text='<%# Eval("Vendor.City") %>'></asp:Label><br /> <asp:Label ID="State" runat="server" Text='<%# Eval("Vendor.State") %>'></asp:Label><br /> <asp:Label ID="Zip" runat="server" Text='<%# Eval("Vendor.Zip") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Phone<br>Email<br>Website" HeaderStyle-Width="100px"> <ItemTemplate> <asp:Label ID="Phone" runat="server" Text='<%# Eval("Vendor.Phone") %>'></asp:Label> <br /> <asp:Label ID="Email" runat="server"><a href='mailto:<%# DataBinder.Eval(Container.DataItem, "Vendor.Email")%>'><%# DataBinder.Eval(Container.DataItem, "Vendor.Email")%></a></asp:Label> <br /> <asp:HyperLink ID="hlWebsite" runat="server" NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "Vendor.WebSite")%>' Text='<%# DataBinder.Eval(Container.DataItem, "Vendor.WebSite")%>' Target="_blank"></asp:HyperLink> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Notes"> <ItemTemplate> <asp:Label ID="Notes" runat="server" Text='<%# Eval("Vendor.Notes") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridButtonColumn ConfirmText="Delete this Client Vendor?" ConfirmDialogType="RadWindow" ConfirmTitle="Delete" ButtonType="ImageButton" ImageUrl="..\Icons\close.gif" CommandName="Delete" /> </Columns> <DetailTables> <telerik:GridTableView DataKeyNames="VendorID,VendorContactID" Name="rgDetail" Width="100%" runat="server" ItemStyle-BackColor="#6288C2" AlternatingItemStyle-BackColor="#6288C2" AllowAutomaticDeletes="true"> <Columns> <telerik:GridButtonColumn Text="Edit Contact" UniqueName="Select" CommandName="Select"> </telerik:GridButtonColumn> <telerik:GridBoundColumn DataField="VendorContactID" ReadOnly="true" UniqueName="ClientID" Visible="false"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn HeaderText="Contact Name"> <ItemTemplate> <asp:Label ID="ContactName" runat="server" Text='<%# Eval("Name") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Address" HeaderStyle-Width="150px"> <ItemTemplate> <asp:Label ID="Address" runat="server" Text='<%# Eval("Address") %>'></asp:Label><br /> <asp:Label ID="City" runat="server" Text='<%# Eval("City") %>'></asp:Label><br /> <asp:Label ID="State" runat="server" Text='<%# Eval("State") %>'></asp:Label><br /> <asp:Label ID="Zip" runat="server" Text='<%# Eval("Zip") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Phone"> <ItemTemplate> <asp:Label ID="Phone" runat="server" Text='<%# Eval("Phone") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Email<br>Website" HeaderStyle-Width="100px"> <ItemTemplate> <asp:Label ID="Email" runat="server"><a href='mailto:<%# DataBinder.Eval(Container.DataItem, "Email")%>'><%# DataBinder.Eval(Container.DataItem, "Email")%></a></asp:Label> <br /> <asp:HyperLink ID="hlWebsite" runat="server" NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "WebSite")%>' Text='<%# DataBinder.Eval(Container.DataItem, "WebSite")%>' Target="_blank"></asp:HyperLink> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Notes"> <ItemTemplate> <asp:Label ID="Notes" runat="server" Text='<%# Eval("Notes") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridButtonColumn ConfirmText="Delete this Vendor Contact?" ConfirmDialogType="RadWindow" ConfirmTitle="Delete" ButtonType="ImageButton" ImageUrl="..\Icons\close.gif" CommandName="Delete" /> </Columns> </telerik:GridTableView> </DetailTables> </MasterTableView> <ExportSettings ExportOnlyData="true" IgnorePaging="true" OpenInNewWindow="true" HideStructureColumns="true" Pdf-PageBottomMargin=".5" Pdf-PageTopMargin=".5" Pdf-PageLeftMargin=".5" Pdf-PageRightMargin=".5" Pdf-PaperSize="Legal" Pdf-PageWidth="356mm" Pdf-PageHeight="216mm" /> <PagerStyle Position="TopAndBottom" /> </telerik:RadGrid> <asp:EntityDataSource ID="edsVendors" runat="server" ConnectionString="name=ProNetData" DefaultContainerName="ProNetData" EnableDelete="true" EnableUpdate="False" EntitySetName="VendorDetails" AutoGenerateWhereClause="false" Include="Vendor,VendorService,Client,RiskAssessment" Where="(it.Client.ClientID = @ClientID or @ClientID is null) and (it.Vendor.VendorID = @VendorID or @VendorID is null) and (it.VendorService.VendorServiceID = @VendorServiceID or @VendorServiceID is null) and (it.Client.RegionID = @RegionID or @RegionID is null) and (it.RiskAssessment.IsCurrent = true)" OrderBy="it.Client.ClientName"> <WhereParameters> <asp:ControlParameter ControlID="ddlRegionFilter" Name="RegionID" DbType="Int32" ConvertEmptyStringToNull="true" /> <asp:ControlParameter ControlID="ddlClientNameFilter" Name="ClientID" Type="Int32" ConvertEmptyStringToNull="true" /> <asp:ControlParameter ControlID="ddlVendorNameFilter" Name="VendorID" Type="Int32" ConvertEmptyStringToNull="true" /> <asp:ControlParameter ControlID="ddlServiceNameFilter" Name="VendorServiceID" Type="Int32" ConvertEmptyStringToNull="true" /> </WhereParameters> </asp:EntityDataSource>protected void rgVendors_DetailTableDataBind(object source, Telerik.Web.UI.GridDetailTableDataBindEventArgs e) { GridDataItem dataItem = e.DetailTableView.ParentItem; int vendorID = int.Parse(dataItem.GetDataKeyValue("VendorID").ToString()); int clientID = int.Parse(dataItem.GetDataKeyValue("ClientID").ToString()); using (ProNetData d = new ProNetData()) { var contacts = (from c in d.VendorContacts where c.VendorID == vendorID && c.ClientID == clientID select new { VendorID = c.VendorID, VendorContactID = c.VendorContactID, Name = c.Name, Address = c.Address, City = c.City, State = c.State, Zip = c.Zip, Phone = c.Phone, Email = c.Email, Website = c.Website, Notes = c.Notes }).ToList(); e.DetailTableView.DataSource = contacts; } }protected void rgVendors_ItemCommand(object source, Telerik.Web.UI.GridCommandEventArgs e) { if (e.CommandName == RadGrid.ExpandCollapseCommandName) { foreach (GridItem item in e.Item.OwnerTableView.Items) { if (item.Expanded && item != e.Item) { item.Expanded = false; } } } }protected void rgVendors_PreRender(object sender, EventArgs e) { HideExpandColumnRecursive(rgVendors.MasterTableView); } public void HideExpandColumnRecursive(GridTableView tableView) { GridItem[] nestedViewItems = tableView.GetItems(GridItemType.NestedView); foreach (GridNestedViewItem nestedViewItem in nestedViewItems) { foreach (GridTableView nestedView in nestedViewItem.NestedTableViews) { if (nestedView.Items.Count == 0) { nestedView.ParentItem.Expanded = false; } else { nestedView.ParentItem.Expanded = true; } } } }