Dynamic GridCalculatedColumn

4 posts, 0 answers
  1. Albert Shenker
    Albert Shenker avatar
    579 posts
    Member since:
    Mar 2004

    Posted 11 Apr 2009 Link to this post

    I am creating a grid control through code-behind. I am looping through a list to crerate the columns dynamically. Some of the columns are of type GridCalculatedColumn. For example, my columns are "Total", "Passed" and "PassedPct". The third is the calculated column. When I create this column, I specify its DataFields with...

    pctCol.DataFields = New String() {"Passed", "Total"}

    and its expression with...

    pctCol.Expression = "{0}/{1}"

    I am getting an error in the grid databind event and the stack trace (shown below) points to the column experession bind event. It is telling me that:

    Cannot find column [Passed].

    I commented out the setting of the column expression and the grid was binded, but obviously the calculated column didn't work. I checked to make sure the source columns for the calculated column existed at the point of settting the expression by checking grid.mastertableview.Columns.FindByUniqueName("Passed") and this column exists. So, why is the exprssion not working. Does the expression use some other property (other than UniqueName) to find its component columns?

    Or could there be something going on in the Databinding. I create the grid dynamically, set it's mastertableview properties, add dynamic columns,  addthe grid to a panel control on the page, add a handler for the grid's ItemDataBound Event, set the datasource of the grid and call databind, all in that order. All of this occurs within the page load event. Is there something I am missing about binding a dynamically created grid that could be causing the issue?

    Stack Trace:
     
    [EvaluateException: Cannot find column [Passed].]  
     
       
    System.Data.NameNode.Bind(DataTable table, List`1 list) +1186845  
       System.Data.DataExpression.Bind(DataTable table) +59  
       System.Data.DataColumn.SetTable(DataTable table) +4826220  
       System.Data.DataColumnCollection.BaseAdd(DataColumn column) +272  
       System.Data.DataColumnCollection.AddAt(Int32 index, DataColumn column) +78  
       System.Data.DataColumnCollection.Add(DataColumn column) +8  
       Telerik.Web.UI.GridDataTableFromEnumerable.GetColumnsToUse() +1020  
       Telerik.Web.UI.GridDataTableFromEnumerable.FillData() +68  
       Telerik.Web.UI.GridResolveEnumerable.Initialize() +32  
       Telerik.Web.UI.GridResolveEnumerable.EnsureInitialized() +20  
       Telerik.Web.UI.GridEnumerableFromDataView..ctor(GridTableView owner, IEnumerable enumerable, Boolean CaseSensitive, Boolean autoGenerateColumns, GridColumnCollection presentColumns, String[] additionalField, Boolean retrieveAllFields) +158  
       Telerik.Web.UI.GridDataSourceHelper.CreateGridEnumerable(GridTableView owner, IEnumerable enumerable, Boolean caseSensitive, Boolean autoGenerateColumns, GridColumnCollection presentColumns, String[] additionalField, Boolean retrieveAllFields) +129  
       Telerik.Web.UI.GridDataSourceHelper.GetResolvedDataSource(GridTableView owner, Object dataSource, String dataMember, Boolean caseSensitive, Boolean autoGenerateColumns, GridColumnCollection presentColumns, String[] additionalField, Boolean retrieveAllFields) +383  
       Telerik.Web.UI.GridTableView.get_ResolvedDataSource() +140  
       Telerik.Web.UI.GridTableView.CreateChildControls(IEnumerable dataSource, Boolean useDataSource) +33  
       System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) +57  
       System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) +114  
       System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +31  
       System.Web.UI.WebControls.DataBoundControl.PerformSelect() +142  
       Telerik.Web.UI.GridTableView.PerformSelect() +4  
       System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +73  
       Telerik.Web.UI.GridTableView.DataBind() +239  
       Telerik.Web.UI.RadGrid.DataBind() +80  
     
  2. Albert Shenker
    Albert Shenker avatar
    579 posts
    Member since:
    Mar 2004

    Posted 12 Apr 2009 Link to this post

    As an addendum.. I tried adding an aggregate to one of the "Numeric" columns (in other words, not one of the CalculatedCOlumns) and I got a similar error. Do some of the Rag grid functions, such as calculated columns and footer aggregates not work particularly well when creating the grid server-side?

    Trace:

    [ArgumentException: Column 'Total' does not belong to table .]  
       System.Data.DataRow.GetDataColumn(String columnName) +1773557  
       System.Data.DataRow.get_Item(String columnName) +13  
       Telerik.Web.UI.GridDataSetHelper.CalculateAggregates(DataRow SourceRow, DataRow DestRow, Int32 rowCountInGroup, GridTableView view) +704  
       Telerik.Web.UI.GridDataSetHelper.InsertGroupByInto(GridTableView gridTableView, DataTable DestTable, DataTable SourceTable, String RowFilter, Int32 FirstIndexInPage, Int32 LastIndexInPage, Boolean ApplyPaging, Boolean IsCustomPaging) +677  
       Telerik.Web.UI.GridEnumerableFromDataView.PerformTransformation() +2740  
       Telerik.Web.UI.GridEnumerableFromDataView.TransformEnumerable() +21  
       Telerik.Web.UI.GridTableView.GetEnumerator(Boolean useDataSource, GridEnumerableBase resolvedDataSource, ArrayList dataKeysArray) +105  
       Telerik.Web.UI.GridTableView.CreateControlHierarchy(Boolean useDataSource) +169  
       Telerik.Web.UI.GridTableView.CreateChildControls(IEnumerable dataSource, Boolean useDataSource) +499  
       System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) +57  
       System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) +114  
       System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +31  
       System.Web.UI.WebControls.DataBoundControl.PerformSelect() +142  
       Telerik.Web.UI.GridTableView.PerformSelect() +4  
       System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +73  
       Telerik.Web.UI.GridTableView.DataBind() +239  
       Telerik.Web.UI.RadGrid.DataBind() +80  
     
  3. Yavor
    Admin
    Yavor avatar
    11 posts

    Posted 14 Apr 2009 Link to this post

    Hi Albert,

    Basically, there should be no problems creating the grid control, or its structure and columns dynamically, regardless of the column types. To further trace the issue, however, it will be best if you open a formal support ticket, and send us a small working project, demonstrating your setup, along with the unwanted behavior. We will review it locally, and advise you further.

    Greetings,
    Yavor
    the Telerik team

    Check out Telerik Trainer , the state of the art learning tool for Telerik products.
  4. Bhaskar
    Bhaskar avatar
    1 posts
    Member since:
    Feb 2015

    Posted 20 Nov 2015 Link to this post

    Server Error in '/' Application.

    ')' or ',' expectedDescription: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

    Exception Details: Telerik.Web.UI.ParseException: ')' or ',' expected

    Source Error: 

    Line 100: Line 101: ddd.DataSource = dt; Line 102: ddd.DataBind(); Line 103: ddd.Width = 1250; Line 104: ddd.HeaderStyle.CssClass = "rowstyle";
    Source File: e:\SSIS\MISDEIFFINALPROJECT\Deif-MIS\Deif-MIS\client\Salesbudgetdashboard.aspx.cs    Line: 102 

    Stack Trace: 

    [ParseException: ')' or ',' expected] Telerik.Web.UI.ExpressionParser.ValidateToken(TokenId t, String errorMessage) +103 Telerik.Web.UI.ExpressionParser.ParseNew() +552 Telerik.Web.UI.ExpressionParser.ParseIdentifier() +285 Telerik.Web.UI.ExpressionParser.ParsePrimaryStart() +83 Telerik.Web.UI.ExpressionParser.ParsePrimary() +47 Telerik.Web.UI.ExpressionParser.ParseUnary() +404 Telerik.Web.UI.ExpressionParser.ParseMultiplicative() +54 Telerik.Web.UI.ExpressionParser.ParseAdditive() +54 Telerik.Web.UI.ExpressionParser.ParseComparison() +69 Telerik.Web.UI.ExpressionParser.ParseLogicalAnd() +49 Telerik.Web.UI.ExpressionParser.ParseLogicalOr() +49 Telerik.Web.UI.ExpressionParser.ParseExpression() +74 Telerik.Web.UI.ExpressionParser.Parse(Type resultType) +76 Telerik.Web.UI.DynamicExpression.ParseLambda(ParameterExpression[] parameters, Type resultType, String expression, Object[] values) +92 Telerik.Web.UI.DynamicExpression.ParseLambda(Type itType, Type resultType, String expression, Object[] values) +132 Telerik.Web.UI.GridDynamicQueryable.Select(IQueryable source, String selector, Object[] values) +226 Telerik.Web.UI.GridDataTableFromEnumerable.FillData35() +2961 Telerik.Web.UI.GridDataTableFromEnumerable.FillData() +1077 Telerik.Web.UI.GridResolveEnumerable.Initialize() +58 Telerik.Web.UI.GridResolveEnumerable.EnsureInitialized() +45 Telerik.Web.UI.GridResolveEnumerable.get_DataTable() +36 Telerik.Web.UI.GridEnumerableFromDataView..ctor(GridTableView owner, DataView dataView, Boolean autoGenerateColumns, GridColumnCollection presentColumns, String[] additionalField, Boolean retrieveAllFields, Boolean enableSplitHeaderText) +245 Telerik.Web.UI.GridDataSourceHelper.CreateGridEnumerable(GridTableView owner, IEnumerable enumerable, Boolean caseSensitive, Boolean autoGenerateColumns, GridColumnCollection presentColumns, String[] additionalField, Boolean retrieveAllFields, Boolean enableSplitHeaderText) +109 Telerik.Web.UI.GridDataSourceHelper.GetResolvedDataSource(GridTableView owner, Object dataSource, String dataMember, Boolean caseSensitive, Boolean autoGenerateColumns, GridColumnCollection presentColumns, String[] additionalField, Boolean retrieveAllFields, Boolean enableSplitHeaderText) +322 Telerik.Web.UI.GridTableView.get_ResolvedDataSource() +256 Telerik.Web.UI.GridTableView.CreateChildControls(IEnumerable dataSource, Boolean useDataSource) +842 System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) +67 System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) +123 System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +33 System.Web.UI.WebControls.DataBoundControl.PerformSelect() +138 Telerik.Web.UI.GridTableView.PerformSelect() +38 System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +30 Telerik.Web.UI.GridTableView.DataBind() +392 Telerik.Web.UI.RadGrid.DataBind() +191 Deif_MIS.client.Salesbudgetdashboard.BindDataEMPcalculation() in e:\SSIS\MISDEIFFINALPROJECT\Deif-MIS\Deif-MIS\client\Salesbudgetdashboard.aspx.cs:102 Deif_MIS.client.Salesbudgetdashboard.Page_Load(Object sender, EventArgs e) in e:\SSIS\MISDEIFFINALPROJECT\Deif-MIS\Deif-MIS\client\Salesbudgetdashboard.aspx.cs:49 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51 System.Web.UI.Control.OnLoad(EventArgs e) +92 System.Web.UI.Control.LoadRecursive() +54 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772

    Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34274
Back to Top