This is a migrated thread and some comments may be shown as answers.

When Rebind the Grid Second time throws, Syntax Error : Missing operand before 'is' operator

1 Answer 129 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Nishant
Top achievements
Rank 1
Nishant asked on 04 Sep 2013, 12:50 PM
Hello Telerik Team,

I am having a problem when rebind the grid on second time with same data source . Everything is same . When first time i call the Rebind function it works fine but on second time it throws Syntax error: Missing operand before 'is' operator. Please help me.

Here is my code
Aspx file
 <telerik:RadGrid ID="rdGridDetailTable" runat="server" AllowSorting="true" Height="400px"
                                                                                    GridLines="both" AutoGenerateColumns="false" OnDetailTableDataBind="rdGridDetailTable_DetailTableDataBind"
                                                                                    OnNeedDataSource="rdGridDetailTable_NeedDataSource" AutoGenerateHierarchy="true"
                                                                                    MasterTableView-ExpandCollapseColumn-HeaderStyle-Width="30px">
                                                                                    <MasterTableView>
                                                                                    </MasterTableView>
                                                                                    <ClientSettings>
                                                                                        <Scrolling AllowScroll="True" SaveScrollPosition="True"></Scrolling>
                                                                                    </ClientSettings>
                                                                                    <HeaderStyle CssClass="HeaderRow" />
                                                                                    <CommandItemStyle BorderColor="#003399" BorderStyle="Solid" BorderWidth="1px" />
                                                                                    <FilterMenu EnableImageSprites="False">
                                                                                    </FilterMenu>
                                                                                    <HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default">
                                                                                    </HeaderContextMenu>
                                                                                </telerik:RadGrid>

aspx.cs


   #region Show Graphs
        private void ShowTable(string value)
        {
                    chartHolder.Controls.Clear();
                    DataSet ds = CalculateAttractivity();
                    PopulateTable(ds.Tables[0], ds.Tables[1]);
                    break;
            
        }
        #endregion


        #region populate table
        private void PopulateTable(DataTable dtData, DataTable dtDataDetails)
        {
            if (GridStructure == false)
            {
                DefineGridStructure(dtData, dtDataDetails);
            }
            trUserDataArea1.Style.Add(" background-color", GraphMin.BackColor.ToString());
            tblDetails.Style.Add("display", "block");
            tblDetails.Visible = true;
            chartHolder.Visible = false; //showing chart 
            Attractivity = dtData;
            AttractivityDetails = dtDataDetails;
            rdGridDetailTable.Rebind();
        }
        #endregion

 #region RadGrid Structure
        private void DefineGridStructure(DataTable dtData, DataTable dtDetail)
        {
            SystemLocalizationBO systemLocalizationBO = new SystemLocalizationBO(true);
            SystemSession sys = hdr.SysSession;
            var weight = SessiontblComponentModel1.Rows.Cast<DataRow>().Select(row => row[10].ToString()).ToArray();
            rdGridDetailTable.Columns.Clear();
            rdGridDetailTable.MasterTableView.Columns.Clear();
            rdGridDetailTable.MasterTableView.DataKeyNames = new string[] { dtData.Columns[0].ColumnName };
            rdGridDetailTable.Width = Unit.Percentage(98);
            rdGridDetailTable.MasterTableView.HierarchyLoadMode = GridChildLoadMode.Client;
            rdGridDetailTable.MasterTableView.DataMember = "Table";
            rdGridDetailTable.AutoGenerateColumns = false;
            string strTable = "<table><tr><td>";
            //Add columns
            int Count = 0;
            foreach (DataColumn dc in dtData.Columns)
            {
                strTable = "<table><tr><td>";
                GridBoundColumn boundColumn;
                boundColumn = new GridBoundColumn();
                boundColumn.DataField = "[" + dc.ColumnName + "]";

                if (Count > 2)
                {
                    strTable = strTable + dc.ColumnName + "</td></tr><tr><td>";
                    strTable = strTable + weight[Count - 3] + "</td></tr></table>";
                    boundColumn.HeaderStyle.Width = 10;
                    boundColumn.HeaderText = strTable;
                    boundColumn.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
                    boundColumn.HeaderStyle.VerticalAlign = VerticalAlign.Middle;
                }
                else
                {
                    
                    boundColumn.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
                    boundColumn.HeaderStyle.VerticalAlign = VerticalAlign.Middle;
                    if (Count == 1)
                    {
                        strTable = strTable + dc.ColumnName + "</td></tr><tr><td>";
                        strTable = strTable + systemLocalizationBO.GetErrorMessage(31075, sys.CurrentUserLanguage.ToString()) + "</td></tr></table>";
                        boundColumn.HeaderText = strTable; 
                    }
                    else
                    {
                        strTable = strTable + dc.ColumnName + "</td></tr><tr><td>";
                        strTable = strTable  + "&nbsp;</td></tr></table>";
                        boundColumn.HeaderText = strTable;
                    }
                }
                rdGridDetailTable.MasterTableView.Columns.Add(boundColumn);
                Count++;
            }
            //Detail table - Orders (II in hierarchy level)
            GridTableView tableViewOrders = new GridTableView(rdGridDetailTable);
            tableViewOrders.Columns.Clear();
            tableViewOrders.Width = Unit.Percentage(100);
            tableViewOrders.DataKeyNames = new string[] { dtData.Columns[0].ColumnName };
            tableViewOrders.DataMember = "Table";
            GridRelationFields relationFields = new GridRelationFields();
            tableViewOrders.ParentTableRelation.Add(relationFields);
            relationFields.MasterKeyField = dtData.Columns[0].ColumnName;
            relationFields.DetailKeyField = dtData.Columns[0].ColumnName;
           
            rdGridDetailTable.MasterTableView.DetailTables.Add(tableViewOrders);
            //Add columns
            Count = 0;
            foreach (DataColumn dc in dtDetail.Columns)
            {
                GridBoundColumn boundColumn;
                boundColumn = new GridBoundColumn();
                boundColumn.DataField = "[" + dc.ColumnName + "]";
                boundColumn.HeaderText = dc.ColumnName;
                if (Count == 0)
                {
                    boundColumn.Visible = false;
                }
                tableViewOrders.Columns.Add(boundColumn);
                Count = 1;
            }
            GridStructure = true;
        }
        #endregion

   protected void rdGridDetailTable_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
        {
            if (Attractivity != null)
            {
                rdGridDetailTable.DataSource = Attractivity;
                rdGridDetailTable.MasterTableView.DetailTables[0].DataSource = AttractivityDetails;
            }
        }


protected void rdGridDetailTable_DetailTableDataBind(object sender, Telerik.Web.UI.GridDetailTableDataBindEventArgs e)
        {
            try
            {
                GridDataItem parentItem = e.DetailTableView.ParentItem as GridDataItem;
                if (parentItem.Edit)
                {
                    return;
                }
                if (parentItem.GetDataKeyValue(AttractivityDetails.Columns[0].ColumnName).ToString() != string.Empty)
                {
                    e.DetailTableView.DataSource = AttractivityDetails.Select(AttractivityDetails.Columns[0].ColumnName + " = '" + parentItem.GetDataKeyValue(AttractivityDetails.Columns[0].ColumnName).ToString() + "'").CopyToDataTable();
                }
                
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

Thanks in advance

Nishant Mittal

1 Answer, 1 is accepted

Sort by
0
Kostadin
Telerik team
answered on 09 Sep 2013, 08:18 AM
Hi Nishant,

I would recommend you to review the following help article which describes how to create a RadGrid programmatically. Additionally I suggest you to create the entirely grid on Page_Init as demonstrated in the aforementioned topic.

Regards,
Kostadin
Telerik
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to the blog feed now.
Tags
Grid
Asked by
Nishant
Top achievements
Rank 1
Answers by
Kostadin
Telerik team
Share this question
or