I am using advanced binding and creating dynamic columns during Page_Init event.
Everything works fine except column groups.
I am creating column groups based on my data and then linking them to columns eventually in page_init event.
Below is the code I am trying to use. Everything is fine on first load. When we try to refresh grid, nothing works. I am getting "Invalid Column Name" error.
DataSet dsSubmittals = new DataSet();
DataSet dsCycles = new DataSet();
string SubID = Session["SubmitalID"].ToString();
if (Session["SubmitalID"] != null)
{
dsCycles = _dv.GetProjectCycles(ProjectID);
//for (int k = 0; k < dsCycles.Tables[0].Rows.Count; k++)
//{
// GridColumnGroup CycleGroup = new GridColumnGroup();
// CycleGroup.HeaderText = dsCycles.Tables[0].Rows[k]["CycleName"].ToString();
// CycleGroup.Name = dsCycles.Tables[0].Rows[k]["CycleID"].ToString();
// RadGridResults.MasterTableView.ColumnGroups.Add(CycleGroup);
//}
//GridColumnGroup CycleGroup1 = new GridColumnGroup();
//CycleGroup1.HeaderText = "Final Status";
//CycleGroup1.Name = "Final_Status";
//RadGridResults.MasterTableView.ColumnGroups.Add(CycleGroup1);
int index = 4;
if (dsCycles.Tables[0].Rows.Count > 1)
{
for (int j =1;j< dsCycles.Tables[0].Rows.Count; j++)
{
string colName = dsCycles.Tables[0].Rows[dsCycles.Tables[0].Rows.Count-j]["CycleName"].ToString();
string CycleIdValue = dsCycles.Tables[0].Rows[dsCycles.Tables[0].Rows.Count-j]["CycleID"].ToString();
colName = colName.Replace(" ", string.Empty);
bool chk = false;
for (int k = 0; k < RadGridResults.Columns.Count; k++)
{
if (RadGridResults.Columns[k].UniqueName != string.Empty)
if (RadGridResults.Columns[k].UniqueName == colName)
{
RadGridResults.Columns[k].HeaderText = RadGridResults.Columns[k].UniqueName;
chk = true;
break;
}
}
if (!chk)
{
int loc = index + j;
GridBoundColumn bf = new GridBoundColumn();
bf.DataField = colName.Trim();
bf.HeaderStyle.Width = 55;
bf.FilterControlWidth = 22;
bf.UniqueName = colName.Trim();
bf.HeaderText = colName.Trim();
bf.HeaderText = colName.Trim();
bf.SortExpression = colName;
bf.FooterText = CycleIdValue;
bf.HeaderButtonType = GridHeaderButtonType.TextButton;
// bf.ColumnGroupName = "Final_Status";
RadGridResults.MasterTableView.Columns.AddAt(loc, bf);
}
}
}
Thanks,
Anil