Home All Groups Group Topic Archive Search About
Author
7 Jan 2006 8:05 AM
ER
Hi,

I would like to create a datagrid or free entry form with dynamic columns
based on the user selection, do you have any ideas or samples?

Any help would be appreciated!

ER

Author
7 Jan 2006 6:41 PM
Phillip Williams
The datagrid server control provides a property named AutoGenerateColumns
that would allow the grid to display any number of columns that are on the
datatable.
http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.datagrid.autogeneratecolumns.aspx

You can make the datagrid editable by adding an EditCommandColumn
http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.editcommandcolumn.aspx

Another alternative is to turn the AutoGenerateColumns to false and then
compose the columns programmatically during databinding like this:
private void dgItems_DataBinding(object sender, System.EventArgs e)
{
    DataTable dt = (DataTable)dgItems.DataSource;
    for( int c=1; c<dt.Columns.Count; c++ )
    {
        BoundColumn bc = new BoundColumn();
        bc.DataField = dt.Columns[c].ColumnName;
        bc.HeaderText = dt.Columns[c].ColumnName;
        dgItems.Columns.Add( bc );
    }
}

Show quote
"ER" wrote:

> Hi,
>
> I would like to create a datagrid or free entry form with dynamic columns
> based on the user selection, do you have any ideas or samples?
>
> Any help would be appreciated!
>
> ER
Author
9 Jan 2006 7:46 AM
ER
Thanks Phillip. For the second solution, would that affect the performance if
the datagrid has significant data to display?

Thanks,
ER

Show quote
"Phillip Williams" wrote:

> The datagrid server control provides a property named AutoGenerateColumns
> that would allow the grid to display any number of columns that are on the
> datatable.
> http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.datagrid.autogeneratecolumns.aspx
>
> You can make the datagrid editable by adding an EditCommandColumn
> http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.editcommandcolumn.aspx
>
> Another alternative is to turn the AutoGenerateColumns to false and then
> compose the columns programmatically during databinding like this:
> private void dgItems_DataBinding(object sender, System.EventArgs e)
> {
>     DataTable dt = (DataTable)dgItems.DataSource;
>     for( int c=1; c<dt.Columns.Count; c++ )
>     {
>         BoundColumn bc = new BoundColumn();
>         bc.DataField = dt.Columns[c].ColumnName;
>         bc.HeaderText = dt.Columns[c].ColumnName;
>         dgItems.Columns.Add( bc );
>     }
> }
>
> --
> HTH,
> Phillip Williams
> http://www.societopia.net
> http://www.webswapp.com
>
>
> "ER" wrote:
>
> > Hi,
> >
> > I would like to create a datagrid or free entry form with dynamic columns
> > based on the user selection, do you have any ideas or samples?
> >
> > Any help would be appreciated!
> >
> > ER
Author
9 Jan 2006 3:56 PM
Phillip Williams
I think that the performance would be the same. 

If the only requirement in building the datagrid were to display all columns
without exception, such as the sample code below, then I prefer using the
declarative syntax (the first solution) because it makes the code more
readable and easily maintainable (one can change it without recompiling the
application).  

If, on the other hand, one has to use different conditions for columns that
may or may not be provided in the data or if one has to hide particular
columns if they happen to exist in the data then the second approach would
work better.
Show quote
"ER" wrote:

> Thanks Phillip. For the second solution, would that affect the performance if
> the datagrid has significant data to display?
>
> Thanks,
> ER
>
> "Phillip Williams" wrote:
>
> > The datagrid server control provides a property named AutoGenerateColumns
> > that would allow the grid to display any number of columns that are on the
> > datatable.
> > http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.datagrid.autogeneratecolumns.aspx
> >
> > You can make the datagrid editable by adding an EditCommandColumn
> > http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.editcommandcolumn.aspx
> >
> > Another alternative is to turn the AutoGenerateColumns to false and then
> > compose the columns programmatically during databinding like this:
> > private void dgItems_DataBinding(object sender, System.EventArgs e)
> > {
> >     DataTable dt = (DataTable)dgItems.DataSource;
> >     for( int c=1; c<dt.Columns.Count; c++ )
> >     {
> >         BoundColumn bc = new BoundColumn();
> >         bc.DataField = dt.Columns[c].ColumnName;
> >         bc.HeaderText = dt.Columns[c].ColumnName;
> >         dgItems.Columns.Add( bc );
> >     }
> > }
> >
> > --
> > HTH,
> > Phillip Williams
> > http://www.societopia.net
> > http://www.webswapp.com
> >
> >
> > "ER" wrote:
> >
> > > Hi,
> > >
> > > I would like to create a datagrid or free entry form with dynamic columns
> > > based on the user selection, do you have any ideas or samples?
> > >
> > > Any help would be appreciated!
> > >
> > > ER

AddThis Social Bookmark Button