<telerik:RadMaskedTextBox ID="RMTBZip" runat="server" Mask="#####-####" SelectionOnFocus="None" />,_recreateControls:function(e){var d=e.getElementsByTagName("*");
for(var a=0,c=d.length;
a<c;
a++){var f=d[a];
if(typeof(f.id)!="undefined"&&f.id!=""){var b=$find(f.id);
if(!b){continue;
}b._element=$get(f.id);
}}},getColumnByUniqueName:function(a){for(var b=0;
b<this.get_columns().length;
b++){if(this.get_columns()[b].get_element().UniqueName==a){return this.get_columns()[b];
}}return null;
Webpage error details
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322)
Timestamp: Fri, 17 Sep 2010 16:56:07 UTC
Message: 'this.get_columns()[...].get_element().UniqueName' is null or not an object
Line: 3398
Char: 6
Code: 0
URI: https://mini.salesnet.com/Telerik.Web.UI.WebResource.axd?_TSM_HiddenField_=RadScriptManager1_TSM&compress=1&_TSM_CombinedScripts_=%3b%3bSystem.Web.Extensions%2c+Version%3d3.5.0.0%2c+Culture%3dneutral%2c+PublicKeyToken%3d31bf3856ad364e35%3aen-US%3ad0c4ca6e-6b5d-49b6-922d-5244924fb100%3aea597d4b%3ab25378d2%3bTelerik.Web.UI%2c+Version%3d2010.2.713.35%2c+Culture%3dneutral%2c+PublicKeyToken%3d121fae78165ba3d4%3aen-US%3a7302be66-e7a1-4bc1-8280-71f03d66eba0%3a16e4e7cd%3a58366029%3af7645509%3a24ee1bba%3a1e771326%3aaa288e2d%3ae330518b%3ac8618e41%3ae4f8f289%3aed16cbdc

var popup = window.radopen(Url, null);popup.OnClientResize = OnClientResize();<telerik:RadWindowManager ID="RadWindowManager1" runat="server" KeepInScreenBounds="true" ReloadOnShow="false" VisibleStatusbar="false" ShowContentDuringLoad="false" EnableShadow="true" OnClientResize="OnClientResize"></telerik:RadWindowManager>Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter) Page.ClientScript.RegisterForEventValidation(cmdProjectSelected.UniqueID, "2") Page.ClientScript.RegisterForEventValidation(cmdProjectSelected.UniqueID, "3") Page.ClientScript.RegisterForEventValidation(cmdProjectSelected.UniqueID, "4") Page.ClientScript.RegisterForEventValidation(cmdProjectSelected.UniqueID, "5") MyBase.Render(writer)End Sub
Requirements:
We need to build a self-referencing RadGrid with custom columns (ca 200 - 500 columns), inline editing and yahoo scrolling (ca 500 - 5000 rows).
The grid datasource should have 24 x 5 = 120 columns at least but the grid itself should show at least 24 columns (2 years = 2 x 12 months).
However, each row should show the content of 5 fields (that's why we need overall 24 x 5 = 120 columns).
The user should be able to edit only 1 of the 5 fields per row. We tried double edit click, but for performance reason, it didnt work well.
To improve performance and for better usability, the user shouldnt wait before all the rows are rendered before editing them.
The grid shows tasks with level and outline numbers. The user want to see a hierarchy, so he can collapse/expand task from any level.
See the picture "preview" in attachment to see how the grid currently looks
Problem:
We could successfully implement the grid with custom column, inline editing and yahoo scrolling. Everything so far is working fine.
Our only problem now is to make the grid self-referencing.
When trying this, we have an Error "System.OutOfMemoryException".
When debugging, we found that, this error occurs just after RadGrid1_NeedDataSource in RadGrid1_ColumnCreated
We suspect that the problem has to do with the huge amount of columns (around 100) and the fact that we enable self-referencing.
Any Idea or suggestions?
Code:
The grid is created programmatically because the columns are created dynamically.
aspx : The grid will be later added in PlaceHolder1
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RadGrid1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1"/> <telerik:AjaxUpdatedControl ControlID="Label1" /> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="RadAjaxManager1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> <ClientEvents /> </telerik:RadAjaxManager> <telerik:RadAjaxLoadingPanel runat="server" ID="RadAjaxLoadingPanel1" Height="75px" Width="75px" Transparency="25"/> <telerik:RadAjaxPanel runat="server" ID="RadAjaxPanel1" LoadingPanelID="RadAjaxLoadingPanel1"> <asp:PlaceHolder runat="server" ID="PlaceHolder1" > </asp:PlaceHolder> <br /> <asp:Label ID="L_Text_LastChange" runat="server" Text="Last change on: " CssClass="labelText"></asp:Label> </telerik:RadAjaxPanel>protected void Page_Init(object sender, EventArgs e) { RadGrid1.ID = "RadGrid1"; RadGrid1.AllowMultiRowEdit = true; RadGrid1.AllowMultiRowSelection = true; RadGrid1.GroupingEnabled = true; RadGrid1.Skin = "Windows7"; RadGrid1.Width = Unit.Percentage(97); //the initial amount of rows to show RadGrid1.PageSize = 20;//20 RadGrid1.AllowPaging = true; RadGrid1.AllowSorting = true; RadGrid1.PagerStyle.Mode = GridPagerMode.NextPrevAndNumeric; RadGrid1.AutoGenerateColumns = false; RadGrid1.GridLines = GridLines.None; RadGrid1.ShowFooter = false; //PagerStyle RadGrid1.PagerStyle.Visible = false; //MasterTableView RadGrid1.MasterTableView.TableLayout = GridTableLayout.Fixed; RadGrid1.MasterTableView.AutoGenerateColumns = true; RadGrid1.MasterTableView.EditMode = GridEditMode.InPlace; //ClientSettings RadGrid1.ClientSettings.Scrolling.ScrollHeight = Unit.Pixel(350);//350 //Yahoo Scrolling RadGrid1.ClientSettings.Scrolling.AllowScroll = true; RadGrid1.ClientSettings.Scrolling.UseStaticHeaders = true; RadGrid1.ClientSettings.Scrolling.SaveScrollPosition = true; RadGrid1.ClientSettings.ClientEvents.OnScroll = "HandleScrolling"; //Because of ClientSelectColumn RadGrid1.ClientSettings.Selecting.AllowRowSelect = true; //Custom row selection RadGrid1.ClientSettings.ClientEvents.OnRowSelected = "SelectRows"; RadGrid1.ClientSettings.ClientEvents.OnRowDeselected = "DeSelectRows"; //Add editColumn RadGrid1.MasterTableView.DataKeyNames = new string[] { "ID", STR_TaskOutlineNumber, ColName_TaskName, STR_TaskLevel, "SAPInternalIDTask", "SAPSystem", STR_HasChanged, STR_ColumnChanged }; RadGrid1.MasterTableView.ClientDataKeyNames = RadGrid1.MasterTableView.DataKeyNames; //Add custom column addCustomColumns(RadGrid1, gridSource); //Set Grid Events RadGrid1.PreRender += new EventHandler(RadGrid1_PreRender); RadGrid1.ColumnCreated += new GridColumnCreatedEventHandler(RadGrid1_ColumnCreated); RadGrid1.UpdateCommand += new GridCommandEventHandler(RadGrid1_UpdateCommand); RadGrid1.NeedDataSource += new GridNeedDataSourceEventHandler(RadGrid1_NeedDataSource); //Add the grid to the placeholder this.PlaceHolder1.Controls.Add(RadGrid1); //TODO: Not working, throw error "System.OutOfMemoryException", need help here!!! //Build self-referencing //RadGrid1.MasterTableView.HierarchyLoadMode = GridChildLoadMode.Client; //RadGrid1.MasterTableView.HierarchyDefaultExpanded = true; //RadGrid1.MasterTableView.SelfHierarchySettings.ParentKeyName = "ParentNr"; //RadGrid1.MasterTableView.SelfHierarchySettings.KeyName = "Nr"; //RadGrid1.ClientSettings.AllowExpandCollapse = true; }protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { //Init values when the page is being loaded or accessed for the first time initValues(); initLabels(); // this would bind the grid calling NeedDataSource RadGrid1.Rebind(); } }RadGrid1_NeedDataSource
protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) { RadGrid1.DataSource = gridSource; }RadGrid1_ColumnCreated
protected void RadGrid1_ColumnCreated(object sender, Telerik.Web.UI.GridColumnCreatedEventArgs e) { GridBoundColumn boundColumn = e.Column as GridBoundColumn; //Hide all columns, they will be made visible again later if (boundColumn != null) boundColumn.Visible = false; }