dynamic column/fields

G

Guest

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
 
G

Guest

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 );
}
}
 
G

Guest

Thanks Phillip. For the second solution, would that affect the performance if
the datagrid has significant data to display?

Thanks,
ER

Phillip Williams said:
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 said:
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
 
G

Guest

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.
--
HTH,
Phillip Williams
http://www.societopia.net
http://www.webswapp.com


ER said:
Thanks Phillip. For the second solution, would that affect the performance if
the datagrid has significant data to display?

Thanks,
ER

Phillip Williams said:
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 said:
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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top