Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 311
  • Last Modified:

c#, undound datagrid, header text

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
soltan8
Asked:
soltan8
  • 5
  • 3
1 Solution
 
topdog770Commented:
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
 
soltan8Author Commented:
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
 
topdog770Commented:
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
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
topdog770Commented:
Call or use the functionality, then do the data binding
0
 
soltan8Author Commented:
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
 
topdog770Commented:
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
 
soltan8Author Commented:
Thanks so much!! That is exactly what I needed.
0
 
topdog770Commented:
Thank you for the A, soltan8
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 5
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now