Solved

c#, undound datagrid, header text

Posted on 2007-11-19
8
301 Views
Last Modified: 2010-04-21
how can I change the header text on an unbound datagrid that has columns dynamically generated at runtime?  I am using the attached code to create the table , but the dynamically generated columns only come up with the column name for the header.
private DataTable datbl()

		{

			DataTable tbl = new DataTable("X");

			DataColumn Coldt;

			DataRow Rowdt; 

			Coldt = new DataColumn();

			Coldt.DataType= System.Type.GetType("System.Int32");

			Coldt.ColumnName = "ID";

			Coldt.AutoIncrement = true;

			Coldt.Caption = "EMPID";

			Coldt.ReadOnly = true;

			Coldt.Unique = true;
 

			tbl.Columns.Add(Coldt);
 

			Coldt = new DataColumn();

			Coldt.DataType= System.Type.GetType("System.String");

			Coldt.ColumnName = "FName";

			Coldt.AutoIncrement = false;

			Coldt.Caption = "Employee First Name";

			Coldt.ReadOnly = false;

			Coldt.Unique = false;

			tbl.Columns.Add(Coldt);
 

			Coldt = new DataColumn();

			Coldt.DataType= System.Type.GetType("System.String");

			Coldt.ColumnName = "LName";

			Coldt.AutoIncrement = false;

			Coldt.Caption = "Employee Last Name";

			Coldt.ReadOnly = false;

			Coldt.Unique = false;

			tbl.Columns.Add(Coldt);
 

			Rowdt = tbl.NewRow();

			Rowdt["ID"] = 0001;

			Rowdt["FName"] = "Kasi";

			Rowdt["LName"] = "Viswanath" ;

			tbl.Rows.Add(Rowdt);
 

			Rowdt = tbl.NewRow();

			Rowdt["ID"] = 0002;

			Rowdt["FName"] = "Arun";

			Rowdt["LName"] = "Kumar" ;

			tbl.Rows.Add(Rowdt);

			

			Rowdt = tbl.NewRow();

			Rowdt["ID"] = 0003;

			Rowdt["FName"] = "Srivasan";

			Rowdt["LName"] = "Ramachandran" ;

			tbl.Rows.Add(Rowdt);
 

			return tbl;
 

			

		}
 

//Draw Table

bindtbl  = datbl();

Session["DataTable"] = bindtbl;

DataGrid1.DataSource = Session["DataTable"];

DataGrid1.DataBind();

Open in new window

0
Comment
Question by:soltan8
  • 5
  • 3
8 Comments
 
LVL 12

Expert Comment

by:topdog770
Comment Utility
Here's a couple of ideas.

1) Use the designer to add unbound datacolumns to the datagridview.  Set the header text with the name(s) you are wanting and set the DataPropertyName to match the column names you set in the code above.  You'd have DataPropertyNames of ID, LName, etc

2) In your code, you can also do the same process I've layed out above.  Create Columns for the DataGridView and set the DataPropertyNames
0
 

Author Comment

by:soltan8
Comment Utility
I probablly should have mentioned that this is .net 1.1 using VS 2003.  I don't think I have the option of using a DataGridView(At least I don't see it as an option).  If I'm wrong, please give me an example of how to use it.. Thanks
0
 
LVL 12

Expert Comment

by:topdog770
Comment Utility
My fault, I should have scrolled down the code.


void FormatColumns()

		{

			DataGridTableStyle dgTableStyle = new DataGridTableStyle();

			dgTableStyle.MappingName = "X"; // name of data table
 

			DataGridColumnStyle dgColumnStyle = new DataGridTextBoxColumn();

			dgColumnStyle.MappingName = "ID";

			dgColumnStyle.HeaderText = "EMPID";

			dgColumnStyle.Width = 45;

			dgTableStyle.GridColumnStyles.Add(dgColumnStyle);
 

			dgColumnStyle = new DataGridTextBoxColumn();

			dgColumnStyle.MappingName = "FName";

			dgColumnStyle.HeaderText = "Employee First Name";

			dgColumnStyle.Width = 120;

			dgTableStyle.GridColumnStyles.Add(dgColumnStyle);
 

			dgColumnStyle = new DataGridTextBoxColumn();

			dgColumnStyle.MappingName = "LName";

			dgColumnStyle.HeaderText = "Employee Last Name";

			dgColumnStyle.Width = 120;

			dgTableStyle.GridColumnStyles.Add(dgColumnStyle);
 

			DataGrid1.TableStyles.Add(dgTableStyle);

		}

Open in new window

0
 
LVL 12

Expert Comment

by:topdog770
Comment Utility
Call or use the functionality, then do the data binding
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 

Author Comment

by:soltan8
Comment Utility
it is failing on DataGrid1.TableStyles.Add(dgTableStyle); This is a web form and apparently DataGrid1 does not have a TableStyles Property.  Any other ideas?
0
 
LVL 12

Accepted Solution

by:
topdog770 earned 125 total points
Comment Utility
Sorry, I'm really slow today.

In your aspx page configure the datagrid like this

The Key is Autogeneratecolumns = false;

Then you have to add each column you want visible.  I just changed the column header text, but you can configure formatting for dates, etc here as well.
			<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 112px; POSITION: absolute; TOP: 200px"

				runat="server" ForeColor="#FF8080" AutoGenerateColumns=False>

				<Columns>

				             <asp:BoundColumn DataField="ID"

HeaderText="EMPID"></asp:BoundColumn>
 

                    <asp:BoundColumn DataField="FName"

HeaderText="First Name"></asp:BoundColumn>
 

                    <asp:BoundColumn DataField="LName"

HeaderText="Last Name"></asp:BoundColumn>
 

                </Columns>

				

				</asp:DataGrid>

Open in new window

0
 

Author Closing Comment

by:soltan8
Comment Utility
Thanks so much!! That is exactly what I needed.
0
 
LVL 12

Expert Comment

by:topdog770
Comment Utility
Thank you for the A, soltan8
0

Featured Post

Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Suggested Solutions

Article by: Ivo
C# And Nullable Types Since 2.0 C# has Nullable(T) Generic Structure. The idea behind is to allow value type objects to have null values just like reference types have. This concerns scenarios where not all data sources have values (like a databa…
In order to hide the "ugly" records selectors (triangles) in the rowheaders, here are some suggestions. Microsoft doesn't have a direct method/property to do it. You can only hide the rowheader column. First solution, the easy way The first sol…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now