Hi,
I have a script error happening only in a very specific set of circumstances in a webpart in MOSS 2007 SP1 since I upgraded to Q1 2010.
I have an hierarcial Rad Grid that works correctly until the master table requires pagination, then I get a script error part way through the ajax request and the page hangs and does not recover.
The error is as below:
| Webpage error details |
| User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; InfoPath.2; .NET4.0C; .NET4.0E) |
| Timestamp: Mon, 19 Apr 2010 13:55:36 UTC |
| Message: Object doesn't support this property or method |
| Line: 827 |
| Char: 32 |
| Code: 0 |
| URI: http://portal.eastbourne-college.co.uk/ScriptResource.axd?d=txQS_34g4oX2-DztPEESENt3RtxUORct0OjIfAJgFWNNLtYZW5oja4jdvk773UqBatOLP9kNfvljXhYOe_gC4SY_QjcWJMkoox23HN8ePFp6C8NiAIn_8RrH1i_Msgqj0&t=634054532715333782 |
The line in the js file that causes the problem is :
| if(this._disposeChildElements){$telerik.disposeElement(c); |
This was all working correctly with the previous version that I was using (2009.2.826.20). As a note the child grids needing pagination does not cause an error only the master table. Please see below for the code for the contol.
Markup:
| <%@ Control Language="C#" AutoEventWireup="true" |
| CodeFile="QuickBudgetView.ascx.cs" |
| Inherits="usercontrols_quickbudgetview" %> |
| <%@ Register assembly="Telerik.Web.UI, Version=2010.1.309.20, Culture=neutral, PublicKeyToken=121fae78165ba3d4" |
| namespace="Telerik.Web.UI" tagprefix="telerik" %> |
| <%@ Register assembly="AjaxControlToolkit, Version=1.0.20229.25335, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e" |
| namespace="AjaxControlToolkit" tagprefix="cc1" %> |
| <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server" > |
| <script type="text/javascript"> |
| function showFilterItem() { |
| $find('<%=rgBudgets.ClientID %>').get_masterTableView().showFilterItem(); |
| } |
| function hideFilterItem() { |
| $find('<%=rgBudgets.ClientID %>').get_masterTableView().hideFilterItem(); |
| } |
| </script> |
| </telerik:RadCodeBlock> |
| <telerik:RadAjaxManagerProxy runat="server" ID="rampChild" > |
| </telerik:RadAjaxManagerProxy> |
| <telerik:RadAjaxLoadingPanel Runat="server" height="75px" width="75px" |
| ID="alpMain" Transparency="20" BackColor="White" |
| HorizontalAlign="Center" > |
| <br /> |
| <br /> |
| <img alt="Loading..." src='<%= RadAjaxLoadingPanel.GetWebResourceUrl(Page, "Telerik.Web.UI.Skins.Default.Ajax.loading.gif") %>' |
| style="border: 0px;" /> |
| </telerik:RadAjaxLoadingPanel> |
| <span class="ec-smartpart" > |
| <div> |
| Show filters <input id="Radio1" type="radio" runat="server" name="showHideGroup" onclick="showFilterItem()" /><label for="Radio1">Yes</label> |
| <input id="Radio2" type="radio" runat="server" name="showHideGroup" onclick="hideFilterItem()" checked="true"/><label for="Radio2" >No</label> |
| </div> |
| <br/> |
| <div class="filterDiv"> |
| <telerik:RadFilter runat="server" ID="RadFilter1" FilterContainerID="rgBudgets" ShowApplyButton="false" /> |
| </div> |
| <telerik:RadGrid ID="rgBudgets" runat="server" AllowPaging="True" AllowSorting="True" |
| AutoGenerateColumns="False" DataSourceID="dsBudgetSummary" GridLines="None" |
| Skin="Sunset" PageSize="15" onitemdatabound="rgBudgets_ItemDataBound" |
| onitemcommand="RadGrid1_ItemCommand" > |
| <HeaderContextMenu EnableAutoScroll="True"></HeaderContextMenu> |
| <PagerStyle Mode="NextPrevAndNumeric" /> |
| <MasterTableView DataSourceID="dsBudgetSummary" DataKeyNames="SUMMARY_ID" IsFilterItemExpanded="false" CommandItemDisplay="Top"> |
| <CommandItemTemplate> |
| <telerik:RadToolBar runat="server" ID="RadToolBar1" OnButtonClick="RadToolBar1_ButtonClick"> |
| <Items> |
| <telerik:RadToolBarButton Text="Apply filter" CommandName="FilterRadGrid" ImageUrl="<%#GetFilterIcon() %>" |
| ImagePosition="Right" /> |
| </Items> |
| </telerik:RadToolBar> |
| </CommandItemTemplate> |
| <RowIndicatorColumn> |
| <HeaderStyle Width="20px"></HeaderStyle> |
| </RowIndicatorColumn> |
| <ExpandCollapseColumn> |
| <HeaderStyle Width="20px"></HeaderStyle> |
| </ExpandCollapseColumn> |
| <DetailTables> |
| <telerik:GridTableView DataKeyNames="SUMMARY_ID" DataSourceID="dsBudgetDetails" |
| Width="100%" runat="server" Name="BudgetDetails" ShowHeader="true" PageSize="25" > |
| <ParentTableRelation> |
| <telerik:GridRelationFields DetailKeyField="SUMMARY_ID" MasterKeyField="SUMMARY_ID" /> |
| </ParentTableRelation> |
| <Columns> |
| <telerik:GridBoundColumn DataField="TRANSACTION_ID" UniqueName="TRANSACTION_ID" Visible="false"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="SUMMARY_ID" HeaderText="SUMMARY_ID" |
| ReadOnly="True" SortExpression="SUMMARY_ID" UniqueName="SUMMARY_ID" |
| Visible="False"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="TRANSACTION_DATE" UniqueName="TRANSACTION_DATE" |
| HeaderText="Date" DataFormatString="{0:dd/MM/yy}" Visible="true"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="ACCOUNT_CODE" HeaderText="Account" |
| SortExpression="ACCOUNT_CODE" UniqueName="ACCOUNT_CODE"> |
| <HeaderStyle Width="60px" Wrap="true" /> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="DEPARTMENT_CODE" HeaderText="Dept" |
| SortExpression="DEPARTMENT_CODE" UniqueName="DEPARTMENT_CODE"> |
| <HeaderStyle Width="60px" Wrap="true" /> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="REFERENCE_1" HeaderText="Ref 1" |
| SortExpression="REFERENCE_1" UniqueName="REFERENCE_1"> |
| <HeaderStyle Width="60px" Wrap="true" /> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="REFERENCE_2" HeaderText="Ref 2" |
| SortExpression="REFERENCE_2" UniqueName="REFERENCE_2"> |
| <HeaderStyle Wrap="true" /> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="TRANSACTION_VALUE" DataType="System.Decimal" |
| HeaderText="Value" ReadOnly="True" SortExpression="TRANSACTION_VALUE" |
| UniqueName="TRANSACTION_VALUE" DataFormatString="{0:C}" AllowFiltering="False"> |
| <HeaderStyle Width="60px" /> |
| <ItemStyle HorizontalAlign="Right" /> |
| </telerik:GridBoundColumn> |
| </Columns> |
| </telerik:GridTableView> |
| </DetailTables> |
| <Columns> |
| <telerik:GridBoundColumn DataField="SUMMARY_ID" HeaderText="SUMMARY_ID" |
| ReadOnly="True" SortExpression="SUMMARY_ID" UniqueName="SUMMARY_ID" |
| Visible="False"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="ACCOUNT_CODE" HeaderText="Account" |
| SortExpression="ACCOUNT_CODE" UniqueName="ACCOUNT_CODE"> |
| <HeaderStyle Width="60px" Wrap="true" /> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="DEPT_CODE" HeaderText="Dept" |
| SortExpression="DEPT_CODE" UniqueName="DEPT_CODE"> |
| <HeaderStyle Width="60px" Wrap="true" /> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="DESCRIPTION" HeaderText="Description" |
| ReadOnly="True" SortExpression="DESCRIPTION" UniqueName="DESCRIPTION" |
| AllowFiltering="False"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="BUDGET" DataType="System.Decimal" |
| HeaderText="Budget" ReadOnly="True" SortExpression="BUDGET" |
| UniqueName="BUDGET" DataFormatString="{0:C}" AllowFiltering="False"> |
| <HeaderStyle Width="60px" /> |
| <ItemStyle HorizontalAlign="Right" /> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="BALANCE" DataType="System.Decimal" |
| HeaderText="Balance" ReadOnly="True" SortExpression="BALANCE" |
| UniqueName="BALANCE" DataFormatString="{0:C}" AllowFiltering="False"> |
| <HeaderStyle Width="60px" /> |
| <ItemStyle HorizontalAlign="Right" /> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="BUDGET_REMAINING" DataType="System.Decimal" |
| HeaderText="Budget Remaining" ReadOnly="True" SortExpression="BUDGET_REMAINING" |
| UniqueName="BUDGET_REMAINING" DataFormatString="{0:C}" |
| AllowFiltering="False"> |
| <HeaderStyle Width="60px" Wrap="true" /> |
| <ItemStyle HorizontalAlign="Right" /> |
| </telerik:GridBoundColumn> |
| </Columns> |
| </MasterTableView> |
| </telerik:RadGrid> |
| </span> |
| <asp:SqlDataSource ID="dsBudgetSummary" runat="server" |
| ConnectionString="<%$ ConnectionStrings:PassMainConnectionString %>" |
| SelectCommand="usps_GetBudgetSummary" SelectCommandType="StoredProcedure" |
| onselecting="dsBudgetSummary_Selecting"> |
| <SelectParameters> |
| <asp:Parameter DefaultValue="xxxx" Name="loginName" Type="String" /> |
| </SelectParameters> |
| </asp:SqlDataSource> |
| <asp:SqlDataSource ID="dsBudgetDetails" runat="server" |
| ConnectionString="<%$ ConnectionStrings:PassMainConnectionString %>" |
| SelectCommand="usps_GetBudgetDetail" SelectCommandType="StoredProcedure" |
| onselecting="dsBudgetDetails_Selecting"> |
| <SelectParameters> |
| <asp:Parameter Name="SUMMARY_ID" Type="String" /> |
| <asp:Parameter Name="loginName" Type="String" /> |
| </SelectParameters> |
| </asp:SqlDataSource> |
Code Behind:
| #region Imports |
| using System; |
| using System.Data; |
| using System.Collections.Generic; |
| using System.ComponentModel; |
| using System.Drawing; |
| using System.Globalization; |
| using System.Web.UI; |
| using System.Web.UI.WebControls; |
| using Microsoft.SharePoint; |
| using Telerik.Web.UI; |
| using EastbourneCollege.Global; |
| #endregion |
| [Description("Quick Budget View")] |
| public partial class usercontrols_quickbudgetview : System.Web.UI.UserControl |
| { |
| private SPUser _user; |
| private SPWeb _web; |
| protected override void OnInit(EventArgs e) |
| { |
| base.OnInit(e); |
| Page.ClientScript.RegisterStartupScript(typeof(usercontrols_quickbudgetview), this.ID, "_spOriginalFormAction = document.forms[0].action;_spSuppressFormOnSubmitWrapper=true;", true); |
| if (this.Page.Form != null) |
| { |
| string formOnSubmitAtt = this.Page.Form.Attributes["onsubmit"]; |
| if (!string.IsNullOrEmpty(formOnSubmitAtt) && formOnSubmitAtt == "return _spFormOnSubmitWrapper();") |
| { |
| this.Page.Form.Attributes["onsubmit"] = "_spFormOnSubmitWrapper();"; |
| } |
| } |
| } |
| protected override void OnPreRender(EventArgs e) |
| { |
| base.OnPreRender(e); |
| RadAjaxManager.GetCurrent(Page).AjaxSettings.AddAjaxSetting(rgBudgets,rgBudgets,alpMain); |
| } |
| protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e) |
| { |
| if (e.CommandName == "FilterRadGrid") |
| { |
| RadFilter1.FireApplyCommand(); |
| } |
| } |
| protected void Header1_SkinChanged(object sender, SkinChangedEventArgs e) |
| { |
| //Required for dynamic skin changing |
| rgBudgets.Rebind(); |
| } |
| protected void RadToolBar1_ButtonClick(object sender, RadToolBarEventArgs e) |
| { |
| // |
| } |
| protected string GetFilterIcon() |
| { |
| return RadAjaxLoadingPanel.GetWebResourceUrl(Page, string.Format("Telerik.Web.UI.Skins.{0}.Grid.Filter.gif",rgBudgets.SkinID)); |
| } |
| protected void Page_Load(object sender, EventArgs e) |
| { |
| _web = SPContext.Current.Web; |
| _user = _web.CurrentUser; |
| if (Page.IsPostBack) return; |
| EnsureChildControls(); |
| DataBind(); |
| } |
| protected void dsBudgetSummary_Selecting(object sender, SqlDataSourceSelectingEventArgs e) |
| { |
| e.Command.Parameters["@loginName"].Value = _user.LoginName;// @"epcot\cjg"; |
| } |
| protected void dsBudgetDetails_Selecting(object sender, SqlDataSourceSelectingEventArgs e) |
| { |
| e.Command.Parameters["@loginName"].Value = _user.LoginName;// @"epcot\cjg"; |
| } |
| protected void rgBudgets_ItemDataBound(object sender, GridItemEventArgs e) |
| { |
| //Is it a GridDataItem |
| if (e.Item is GridDataItem && e.Item.OwnerTableView.Name!="BudgetDetails") |
| { |
| //Get the instance of the right type |
| GridDataItem dataBoundItem = e.Item as GridDataItem; |
| //Check the formatting condition |
| if (double.Parse(dataBoundItem["BUDGET_REMAINING"].Text,NumberStyles.Any) < 0) |
| { |
| dataBoundItem["BUDGET_REMAINING"].ForeColor = Color.Red; |
| dataBoundItem["BUDGET_REMAINING"].Font.Bold = true; |
| } |
| } |
| } |
| } |
Thanks
Chris