I have a hierarchy grid that is populated on demand (server side) using the NeedDataSource and DetailTableDataBind events (single level detail table) based on your example provided in the documentation.
Everything works fine but I have noticed that if 2 child levels are opened/expanded at the same time the second one does not refresh correctly. When I click to expand to see the details in another row I have correct number of pages but no data in the grid.
If I only have one sub level expanded/opened at the time everything works fine – for example I close/hide the details before I open/expand another row.
What else do I need to do to fix the refresh issue.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body> <form id="form1" runat="server"> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> </telerik:RadScriptManager> <telerik:RadSkinManager ID="RadSkinManager1" runat="server" ShowChooser="true"> </telerik:RadSkinManager> <telerik:RadFormDecorator ID="RadFormDecorator1" runat="server" Skin="Office2007" DecoratedControls="All" /> <asp:Button ID="Button1" runat="server" Text="Button" /> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1"> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:AdventureWorksLT2008ConnectionString %>" SelectCommand="SELECT top 10 * FROM [SalesLT].[Customer]"></asp:SqlDataSource> </form></body></html>using System;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Data;using System.Configuration;using System.Web.Security;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using Telerik.Web.UI;public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { }}<?xml version="1.0"?><configuration> <connectionStrings> <add name="AdventureWorksLT2008ConnectionString" connectionString="Data Source=LOCALHOST\SQLEXPRESS;Initial Catalog=AdventureWorksLT2008;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <compilation debug="true" targetFramework="4.0"> </compilation> <pages> <controls> <add tagPrefix="telerik" namespace="Telerik.Web.UI" assembly="Telerik.Web.UI" /> </controls> </pages> <httpHandlers> <add path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" validate="false" /> </httpHandlers> </system.web> <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <handlers> <add name="Telerik_Web_UI_WebResource_axd" verb="*" preCondition="integratedMode" path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" /> </handlers> </system.webServer></configuration><
rad:RadGrid id="dgStock" runat="server" Width="400px" Skin="Windows"
<
ClientSettings Resizing-AllowColumnResize="true" />
then i have this in the code behind
Protected Sub RadGrid1_ColumnCreated(ByVal sender As Object, ByVal e As Telerik.WebControls.GridColumnCreatedEventArgs) Handles dgStock.ColumnCreated
If TypeOf e.Column Is GridGroupSplitterColumn Then
e.Column.HeaderStyle.Width = Unit.Pixel(1)
e.Column.ItemStyle.Width = Unit.Pixel(1)
e.Column.Resizable =
False
End If
End Sub
Private Sub RadGrid1_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgStock.PreRender
For Each column As GridColumn In dgStock.MasterTableView.RenderColumns
If (TypeOf column Is GridGroupSplitterColumn) Then
column.HeaderStyle.Width = Unit.Pixel(1)
column.ItemStyle.Width = Unit.Pixel(1)
column.Resizable =
False
End If
Next
End Sub
The grouping of the grid is achieved as shown below
<
GroupByExpressions>
<
rad:GridGroupByExpression><SelectFields>
<
rad:GridGroupByField FieldName="StockType" FieldAlias="StockType" FormatString="" HeaderText=""></rad:GridGroupByField>
</
SelectFields>
<
GroupByFields>
<
rad:GridGroupByField FieldName="StockType" FieldAlias="StockType" FormatString="" HeaderText=""></rad:GridGroupByField>
</
GroupByFields>
</
rad:GridGroupByExpression>
</
GroupByExpressions>
Many thanks for your help
andrea
<telerik:RadScriptManager ID="m1" runat="server"/><telerik:RadComboBox ID="b1" runat="server" AutoPostBack="true" AllowCustomText="true" Filter="Contains" Style="vertical-align: middle;" Width="100px" Label="Filter:"> <Items> <telerik:RadComboBoxItem Text="None" Value="0" /> <telerik:RadComboBoxItem Text="Contains" Value="1"/> <telerik:RadComboBoxItem Text="StartsWith" Value="2" /> </Items></telerik:RadComboBox>DataTextField to Text or Value. Doesn't matter - still no results.
I also tried to do DataBind() from server side code to ObservableCollection<string> and Dictionary<string,string> with no results as well.
Please advise.
Thanks,
Nick
function getTaxableOrderSubTotal() { var taxableOrderSubTotalAmnt = 0.00; var radGrid = $find('<%= RadGrid1.ClientID %>'); var masterTableView; var tableViewRows; var length = 0; if (radGrid) { masterTableView = radGrid.get_masterTableView(); } if (masterTableView) { tableViewRows = masterTableView.get_dataItems(); } if (tableViewRows) { length = tableViewRows.length; } if (masterTableView) { if (length > 0) { for (var i = 0; i < length; i++) { var dataItem = masterTableView.get_dataItems()[i]; var isLITaxable = false; if (dataItem) { // 1. Get Taxable Check box value var chkTxbl = dataItem.findElement("chkTaxableLI"); var liTotalPrice = 0.00; if (chkTxbl && chkTxbl.checked) { // Get Total lineITem Price: // if litTotalPrice control is found the //item is in readonly mode // if txtTotalPrice control is found then // item is in edit mode if (dataItem.findElement("litTotalPrice")) { liTotalPrice = dataItem.findElement("litTotalPrice").value; } else if (dataItem.findElement("txtTotalPrice")) { liTotalPrice = dataItem.findElement("txtTotalPrice").value; } taxableOrderSubTotalAmnt = parseFloat(taxableOrderSubTotalAmnt) + parseFloat(liTotalPrice); } } } } } return taxableOrderSubTotalAmnt;}<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"></asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> <script>...</script> </telerik:RadCodeBlock> <asp:Panel ID="pnltest" runat="server"> <telerik:RadAjaxManager ID="RAManager1" EnableAJAX="true" runat="server" OnAjaxRequest="RAManager1_AjaxRequest"> </telerik:RadAjaxManager> <asp:UpdatePanel ID="testUP" runat="server" UpdateMode="Always" class="showcreation"> <ContentTemplate> <fieldset class="fieldsetwidth"> <table class="fTable"> <tr> <td> <asp:Label ID="lbl_BondClass" runat="server" Text="Bond Class:" /> </td> <td> <telerik:RadComboBox ID="cb_bondClass" runat="server" OnDataBinding="cb_BC_DataBinding" AutoPostBack="true" OnSelectedIndexChanged="cb_bondClass_SelectedIndexChanged" SkinID="BondClassRadComboBox"> <HeaderTemplate> <ul> <li class="bondClassColOne">Bond Class </li> <li class="bondClassColTwo">Description </li> </ul> </HeaderTemplate> <ItemTemplate> <ul> <li class="bondClassColOne"> <%# DataBinder.Eval(Container, "Text")%> </li> <li class="bondClassColTwo"> <%# DataBinder.Eval(Container, "Attributes['Description']")%> </li> </ul> </ItemTemplate> </telerik:RadComboBox> </td> </tr> </table> </fieldset> </ContentTemplate> </asp:UpdatePanel> </asp:Panel> <telerik:RadPanelBar ID="rpb_BondCreation" runat="server" ExpandMode="MultipleExpandedItems" Width="727" Skin="Simple"> <Items> <telerik:RadPanelItem Text="Statistics" Expanded="false" runat="server"> <Items> <telerik:RadPanelItem Value="Statistics" runat="server"> <ContentTemplate> <table class="formContent" cellspacing="1"> <tr> <td> <asp:ValidationSummary ID="ValidationSummary2" runat="server" HeaderText="There were errors on the page:" DisplayMode="BulletList" ShowMessageBox="true" ValidationGroup="vg_btn_CalculatePremium" ShowSummary="false" /> </td> </tr> <tr> <td colspan="2"> <table> <tr> <td> <asp:Label ID="lbl_SAACode" runat="server" Text="SAA Code:" /> </td> <td> <telerik:RadComboBox ID="cb_SAACode" runat="server" HighlightTemplatedItems="true" Skin="Simple" DropDownWidth="600px" EnableLoadOnDemand="True" Width="100px" OnClientSelectedIndexChanged="fillSAACode" OnDataBound="cb_SAACode_DataBound"> <HeaderTemplate> <table> <tr> <td style="width: 50px"> SAA </td> <td style="width: 300px"> DESC </td> <td style="width: 150px"> GENERAL </td> <td style="width: 100px"> RATECLASS </td> <td style="visibility: collapse;"> SAACODEEFF </td> <td style="visibility: collapse;"> SAACODEDIS </td> </tr> </table> </HeaderTemplate> <ItemTemplate> <table> <tr> <td style="width: 150px" id="saaVal"> <%# DataBinder.Eval(Container, "Value")%> </td> <td style="width: 200px" id="saaDesc"> <%# DataBinder.Eval(Container, "Text")%> </td> <td style="width: 150px" id="saaClass"> <%# DataBinder.Eval(Container, "Attributes['GENERAL']")%> </td> <td style="width: 50px" id="saaRate"> <%# DataBinder.Eval(Container, "Attributes['RATECLASS']")%> </td> <td style="visibility: collapse;"> <%# DataBinder.Eval(Container, "Attributes['SAACODEEFF']")%> </td> <td style="visibility: collapse;"> <%# DataBinder.Eval(Container, "Attributes['SAACODEDIS']")%> </td> </tr> </table> </ItemTemplate> </telerik:RadComboBox> <asp:RequiredFieldValidator ID="saacodevalidator" runat="server" ControlToValidate="cb_SAACode" ValidationGroup="vg_btn_process" ErrorMessage="SAA Code is required." Display="None"> </asp:RequiredFieldValidator> </td> </tr> </table> </td> </tr> </table> <%# DataBinder.Eval(Container, "Value")%> </ContentTemplate> </telerik:RadPanelItem> </Items> </telerik:RadPanelItem> </Items> </telerik:RadPanelBar></asp:Content>namespace BSGSuretyRewrite.BondCreation{ [System.Web.Script.Services.ScriptService] public partial class BondCreation : System.Web.UI.Page { public string mError = string.Empty; public string sRollback = Environment.NewLine + " IF @@error <> 0 BEGIN ROLLBACK TRANSACTION RETURN END " + Environment.NewLine; public string qBType; protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { cb_IssuedBy.DataBind(); ddl_TerminationProvisions.Attributes.Add("onChange", "onSelect();"); this.btn_ClearAddress.Attributes["onClick"] = "return false;"; cb_SameAddress.Attributes.Add("onclick", "javascript:OnCheck_Changed(this);"); int bidNum = int.Parse(Request.QueryString["BidNum"]); qBType = Request.QueryString["bType"]; cb_bondClass.DataBind(); RadPanelItem item = (RadPanelItem)rpb_BondCreation.FindItemByValue("Statistics"); RadComboBox combo = (RadComboBox)item.FindControl("cb_SAACode"); combo.DataBind(); } } protected void cb_bondClass_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e) { if (txt_BondType.Text == "Commercial") cb_Risk.DataBind(); ClearSAAcode(); } protected void ClearSAAcode() { RadPanelItem item = (RadPanelItem)rpb_BondCreation.FindItemByValue("Statistics"); RadComboBox combo = (RadComboBox)item.FindControl("cb_SAACode"); combo.Items.Clear(); combo.DataBind(); txt_SAADescription.Text = string.Empty; txt_SAAClass.Text = string.Empty; txt_RateClass.Text = string.Empty; } protected void cb_SAACode_DataBound(object sender, EventArgs e) { RadComboBox SAArcb = (RadComboBox)sender; if (SAArcb.Items.Count != 0) { SAArcb.Items.Clear(); SAArcb.Text = string.Empty; } int bondType = -1; if (qBType == "Commercial") bondType = 1; else bondType = 0; List<Saa> mySAA = UtilityBond.GetSAACodeListByTypeandClass(cb_bondClass.SelectedValue, bondType); foreach (Saa s in mySAA) { RadComboBoxItem item = new RadComboBoxItem(); item.Text = s.SAA_CODE.ToString(); item.Value = s.SAA_DESC; item.Attributes.Add("GENERAL", s.GENERAL); item.Attributes.Add("RATECLASS", s.RATECLASS ?? ""); item.Attributes.Add("SAACODEEFF", s.ClsCodeEff.ToString() ?? ""); item.Attributes.Add("SAACODEDIS", s.ClsCodeDisable.ToString() ?? ""); SAArcb.Items.Add(item); item.DataBind(); } RadComboBoxItem item1 = new RadComboBoxItem(); SAArcb.Items.Insert(0, item1); } }}