Hello
I programmatic create a Grid with AutoGenerateCollumns = true
after the Bind how can I remove some column ?
would be client or server side..
my PROC is returning these fields
cod,productdescription,value
and with autogenerate = true all fields will bind to the grid
can I remove "COD" after the grid is builded ?
NOTE : I Will Use the field COD as a relation field with the detail table.
theres a way to make it invisible?
thank you
I programmatic create a Grid with AutoGenerateCollumns = true
after the Bind how can I remove some column ?
would be client or server side..
my PROC is returning these fields
cod,productdescription,value
and with autogenerate = true all fields will bind to the grid
can I remove "COD" after the grid is builded ?
NOTE : I Will Use the field COD as a relation field with the detail table.
theres a way to make it invisible?
thank you
13 Answers, 1 is accepted
0

Bruno
Top achievements
Rank 1
answered on 25 Mar 2009, 03:23 PM
I tried with that
But the problem is that
the Grid1.Columns.Count is resturning no Columns, because the columns is being created at runtime
// Find the Grid |
RadGrid Grid1 = (RadGrid)PlaceHolder1.FindControl("RadGrid1"); |
// Count The Collumns |
Response.Write(Grid1.Columns.Count.ToString()); |
//tried to remove |
Grid1.Columns.Remove("COD"); |
//or |
Grid1.Columns[0].visible = false; |
//or |
Grid1.Columns.FindByDataField("COD").visible = false; |
But the problem is that
the Grid1.Columns.Count is resturning no Columns, because the columns is being created at runtime
0

Bruno
Top achievements
Rank 1
answered on 25 Mar 2009, 09:13 PM
or some way to Hide a column and still have it accessable in client-side.
0

Princy
Top achievements
Rank 2
answered on 26 Mar 2009, 04:15 AM
Hello Bruno,
You can hide a specific column in the grid using the Display property, in the grids PreRender event and access it on client
aspx:
Thanks
Princy.
You can hide a specific column in the grid using the Display property, in the grids PreRender event and access it on client
aspx:
protected void RadGrid1_PreRender(object sender, EventArgs e) |
{ |
RadGrid1.MasterTableView.GetColumn("COD").Display = false; |
} |
Thanks
Princy.
0

Bruno
Top achievements
Rank 1
answered on 26 Mar 2009, 12:29 PM
I Dont have a RadGrid in my aspx.
in the aspx I have just a PlaceHolder
and I´m creating the RadGrid1 on the C#
how can I set the "OnPreRender" att ?
then I have to put your code
But my grid is AutoGenerated , and its not handling the event.
Thanxs
in the aspx I have just a PlaceHolder
and I´m creating the RadGrid1 on the C#
how can I set the "OnPreRender" att ?
RadGrid RadGrid1 = new RadGrid(); |
RadGrid1.ID = "RadGrid1"; |
RadGrid1.DataSourceID = "SqlDataSource1"; |
RadGrid1.MasterTableView.DataKeyNames = new string[] { VDataKey1 }; |
RadGrid1.Width = Unit.Percentage(98); |
RadGrid1.PageSize = 40; |
RadGrid1.AllowPaging = true; |
RadGrid1.AllowSorting = true; |
RadGrid1.PagerStyle.Mode = GridPagerMode.NextPrevAndNumeric; |
RadGrid1.PagerStyle.Position = GridPagerPosition.TopAndBottom; |
RadGrid1.PagerStyle.NextPagesToolTip = "Próximas páginas"; |
RadGrid1.PagerStyle.PrevPagesToolTip = "Páginas anteriores"; |
RadGrid1.PagerStyle.NextPageText = "Próxima página"; |
RadGrid1.PagerStyle.PrevPageToolTip = "Página Anterior"; |
RadGrid1.AutoGenerateColumns = true; |
RadGrid1.ShowStatusBar = true; |
RadGrid1.ShowFooter = true; |
RadGrid1.Skin = "Sunset"; |
then I have to put your code
protected void RadGrid1_PreRender(object sender, EventArgs e) |
{ |
RadGrid grid = (RadGrid)PlaceHolder1.FindControl("RadGrid1"); |
grid.MasterTableView.GetColumn("nummes").Display = false; |
} |
But my grid is AutoGenerated , and its not handling the event.
Thanxs
0

Andreas N.
Top achievements
Rank 2
answered on 26 Mar 2009, 01:15 PM
Hi,
just try to add the eventhandler in your code when creating the Grid like:
Then you can use the event.
Regards
Andreas
just try to add the eventhandler in your code when creating the Grid like:
rGdEditor
.PreRender +=new EventHandler(rGdEditor_PreRender);
Then you can use the event.
Regards
Andreas
0

Bruno
Top achievements
Rank 1
answered on 26 Mar 2009, 02:03 PM
Ok Andreas that works well for my MasterTable:
The code above is working well, but now I need to do the same for the detail Tables as:
and the last line of this code is returning an error,
During PreRender the DetailTable already exists ??
protected void RadGrid1_PreRender(object sender, EventArgs e) |
{ |
RadGrid grid = (RadGrid)PlaceHolder1.FindControl("RadGrid1"); |
grid.MasterTableView.GetColumn("nummes").Display = false; |
} |
The code above is working well, but now I need to do the same for the detail Tables as:
protected void RadGrid1_PreRender(object sender, EventArgs e) |
{ |
RadGrid grid = (RadGrid)PlaceHolder1.FindControl("RadGrid1"); |
grid.MasterTableView.GetColumn("nummes").Display = false; |
grid.MasterTableView.DetailTables[0].GetColumn("datakey").Visible = false; |
} |
and the last line of this code is returning an error,
Cannot find a column with UniqueName 'datakey' |
Descrição: Ocorreu uma exceção não tratada durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código. |
Detalhes da Exceção: Telerik.Web.UI.GridException: Cannot find a column with UniqueName 'datakey' |
Erro de Origem: |
Linha 46: RadGrid grid = (RadGrid)PlaceHolder1.FindControl("RadGrid1"); |
Linha 47: grid.MasterTableView.GetColumn("nummes").Display = false; |
Linha 48: grid.MasterTableView.DetailTables[0].GetColumn("datakey").Visible = false; |
Linha 49: |
Linha 50: |
Arquivo de Origem: c:\Documents and Settings\SMA_01\Meus documentos\Visual Studio 2008\BI\Protegidos\Relatorios.aspx.cs Linha: 48 |
During PreRender the DetailTable already exists ??
0

Andreas N.
Top achievements
Rank 2
answered on 26 Mar 2009, 06:19 PM
Hi,
on prerender, the creation of the objects has finished, please have a look here:
http://www.telerik.com/help/aspnet-ajax/grdeventsequence.htm
My Assumption is, that you don't have a column named datakey in your detail table (as the exception says), If you do have a column with that name, try to use the correct upper/lower casing of the column name, as sometimes, the grid is sensitive to that.
regards
Andreas
on prerender, the creation of the objects has finished, please have a look here:
http://www.telerik.com/help/aspnet-ajax/grdeventsequence.htm
My Assumption is, that you don't have a column named datakey in your detail table (as the exception says), If you do have a column with that name, try to use the correct upper/lower casing of the column name, as sometimes, the grid is sensitive to that.
regards
Andreas
0

Shinu
Top achievements
Rank 2
answered on 27 Mar 2009, 07:58 AM
Hi Bruno,
The above given code must be working fine. You are getting this may be because the column named 'datakey' may not be present in the Detail table's column collection as Andreas said or may be you are trying to access the wrong Detail table. I would suggest you to send the C# code where you are creating the Detail table.
Regards
Shinu
The above given code must be working fine. You are getting this may be because the column named 'datakey' may not be present in the Detail table's column collection as Andreas said or may be you are trying to access the wrong Detail table. I would suggest you to send the C# code where you are creating the Detail table.
Regards
Shinu
0

Bruno
Top achievements
Rank 1
answered on 27 Mar 2009, 12:18 PM
private void DefineGridStructure(string VQuery1,string VDataKey1,string VQuery2,string VDataKey2,string VType2,string VQuery3,string VDataKey3) |
{ |
string connString = ConfigurationManager.ConnectionStrings["coelbaConnectionString"].ConnectionString; |
SqlDataSource DataSource1 = new SqlDataSource(connString, VQuery1.ToString()); |
DataSource1.ID = "SqlDataSource1"; |
this.PlaceHolder1.Controls.Add(DataSource1); |
RadGrid RadGrid1 = new RadGrid(); |
RadGrid1.ID = "RadGrid1"; |
RadGrid1.DataSourceID = "SqlDataSource1"; |
RadGrid1.MasterTableView.DataKeyNames = new string[] { VDataKey1 }; |
RadGrid1.Width = Unit.Percentage(98); |
RadGrid1.PageSize = 40; |
RadGrid1.AllowPaging = true; |
RadGrid1.AllowSorting = true; |
RadGrid1.PagerStyle.Mode = GridPagerMode.NextPrevAndNumeric; |
RadGrid1.PagerStyle.Position = GridPagerPosition.TopAndBottom; |
RadGrid1.PagerStyle.NextPagesToolTip = "Próximas páginas"; |
RadGrid1.PagerStyle.PrevPagesToolTip = "Páginas anteriores"; |
RadGrid1.PagerStyle.NextPageText = "Próxima página"; |
RadGrid1.PagerStyle.PrevPageToolTip = "Página Anterior"; |
RadGrid1.AutoGenerateColumns = true; |
RadGrid1.ShowStatusBar = true; |
RadGrid1.ShowFooter = true; |
RadGrid1.Skin = "Sunset"; |
RadGrid1.PreRender += new EventHandler(RadGrid1_PreRender); |
RadGrid1.MasterTableView.PageSize = 40; |
RadGrid1.MasterTableView.AllowMultiColumnSorting = true; |
//Ckecking if is necessary to cretae a second level grid |
//The Detail Table Index [0] |
if (VQuery2 != "") |
{ |
SqlDataSource DataSource2 = new SqlDataSource(connString, VQuery2); |
DataSource2.ID = "SqlDataSource2"; |
SessionParameter SesParam1 = new SessionParameter(VDataKey1, VDataKey1); |
DataSource2.SelectParameters.Add(SesParam1); |
this.PlaceHolder1.Controls.Add(DataSource2); |
//Detail table - Orders (II in hierarchy level) |
GridTableView tableViewOrders = new GridTableView(RadGrid1); |
tableViewOrders.DataSourceID = "SqlDataSource2"; |
tableViewOrders.Width = Unit.Percentage(100); |
tableViewOrders.DataKeyNames = new string[] { VDataKey2 }; |
tableViewOrders.AutoGenerateColumns = true; |
GridRelationFields relationFields = new GridRelationFields(); |
relationFields.MasterKeyField = VDataKey1.ToString(); |
relationFields.DetailKeyField = VDataKey1.ToString(); |
tableViewOrders.ParentTableRelation.Add(relationFields); |
tableViewOrders.PreRender += new EventHandler(tableViewOrders_PreRender); |
RadGrid1.MasterTableView.DetailTables.Add(tableViewOrders); |
//the detail table index[1] |
// III Level of the grid |
if (VQuery3 != "") |
{ |
SqlDataSource DataSource3 = new SqlDataSource(connString, VQuery3); |
DataSource3.ID = "SqlDataSource3"; |
if (VType2 == "DateTime") |
{ |
SessionParameter SessParam2 = new SessionParameter(VDataKey2, System.Data.DbType.DateTime, VDataKey2); |
DataSource3.SelectParameters.Add(SessParam2); |
this.PlaceHolder1.Controls.Add(DataSource3); |
} |
if (VType2 == "String") |
{ |
SessionParameter SessParam2 = new SessionParameter(VDataKey2, System.Data.DbType.String, VDataKey2); |
DataSource3.SelectParameters.Add(SessParam2); |
this.PlaceHolder1.Controls.Add(DataSource3); |
} |
//grid |
GridTableView tableViewOrderDetails = new GridTableView(RadGrid1); |
tableViewOrderDetails.DataSourceID = "SqlDataSource3"; |
tableViewOrderDetails.Width = Unit.Percentage(100); |
//tableViewOrders.DataKeyNames = new string[] { VDataKey3 }; |
GridRelationFields relationFields2 = new GridRelationFields(); |
relationFields2.MasterKeyField = VDataKey2; |
relationFields2.DetailKeyField = VDataKey2; |
tableViewOrderDetails.ParentTableRelation.Add(relationFields2); |
tableViewOrderDetails.AutoGenerateColumns = true; |
//tableViewOrderDetails.AllowFilteringByColumn = true; |
tableViewOrders.DetailTables.Add(tableViewOrderDetails); |
} |
} |
//Add the RadGrid instance to the controls |
this.PlaceHolder1.Controls.Add(RadGrid1); |
} |
private void CarregaGrid(string RelId) |
{ |
//start switch statement |
switch (RelId) |
{ |
case "34": |
DefineGridStructure("sp_totalAnoMes", "nummes", "exec sp_relPorData @nummes = @nummes", "data","DateTime", "select * from vwds where data = @data order by codatividade", ""); |
break; |
case "35": |
DefineGridStructure("select distinct(matrinspetor),nomeinspetor from vwds", "matrinspetor", "select * from vwds where matrinspetor = @matrinspetor ", "codatividade","String", "select * from vwds where codatividade = @codatividade order by codatividade", ""); |
break; |
default: |
DefineGridStructure("", "", "", "", "","",""); |
break; |
}//end switch statement |
} |
0

Bruno
Top achievements
Rank 1
answered on 27 Mar 2009, 12:22 PM
I Want to remove from MASterTable the column "nummes" and it is working fine with
Now I Need to Remove the "datakey" column from my first level Detail Table I tought detailtable[0]
But it isn´nt working
All my Grids is being creted in C# I have just a PLACEHOLDER inside my aspx
My procedures is retuning the datafields and all fields are AutoGererated
protected void RadGrid1_PreRender(object sender, EventArgs e) |
{ |
RadGrid grid = (RadGrid)PlaceHolder1.FindControl("RadGrid1"); |
switch (RelId) |
{ |
case "34": |
grid.MasterTableView.GetColumn("nummes").Display = false; |
break; |
} |
Now I Need to Remove the "datakey" column from my first level Detail Table I tought detailtable[0]
But it isn´nt working
protected void tableViewOrders_PreRender(object sender, EventArgs e) |
{ |
RadGrid grid = (RadGrid)PlaceHolder1.FindControl("RadGrid1"); |
grid.MasterTableView.DetailTables[0].GetColumn("data").Visible = false; |
} |
All my Grids is being creted in C# I have just a PLACEHOLDER inside my aspx
My procedures is retuning the datafields and all fields are AutoGererated
0
Accepted

Princy
Top achievements
Rank 2
answered on 27 Mar 2009, 12:52 PM
Hello Bruno,
You can use the name property of the detail table as shown in the following code and see if it helps:
aspx:
cs:
Thanks
Princy.
You can use the name property of the detail table as shown in the following code and see if it helps:
aspx:
<telerik:RadGrid ID="RadGrid1" DataSourceID="SqlDataSource1" runat="server" > |
<MasterTableView DataSourceID="SqlDataSource1"> |
<DetailTables > |
<telerik:GridTableView DataSourceID="SqlDataSource2" Name="Detail" runat="server" > |
cs:
protected void RadGrid1_PreRender(object sender, EventArgs e) |
{ |
RadGrid grid = (RadGrid)PlaceHolder1.FindControl("RadGrid1"); |
foreach (GridDataItem _item in grid.Items) |
{ |
if (_item.OwnerTableView.Name == "Detail") |
{ |
_item.OwnerTableView.GetColumn("data").Visible = false; |
} |
} |
} |
Thanks
Princy.
0

Bruno
Top achievements
Rank 1
answered on 27 Mar 2009, 01:11 PM
I dont have the RadGrid in my aspx
how can I set the Name="Detail" inside the .cs ?
how can I set the Name="Detail" inside the .cs ?
0

Bruno
Top achievements
Rank 1
answered on 27 Mar 2009, 01:12 PM
OK I Found
tableViewOrders.Name = "Detail";
Now It is working perfect!!!
Thank you all!!
tableViewOrders.Name = "Detail";
Now It is working perfect!!!
Thank you all!!