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 + " </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;
}
}
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 + " </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
Nishant Mittal