Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP .Net Web Controls > Aligning Particular Columns in a Data Grid

Reply
Thread Tools

Aligning Particular Columns in a Data Grid

 
 
Jennifer
Guest
Posts: n/a
 
      11-18-2004
Hi! I've got a datagrid on an asp page and I'd like to set a few of
the columns to center-align. The rest should be left align.

The datagrid (called dgDSR) has 61 columns. It is databound using a
data table.

The code I was trying out to center just the columns I want is:

dgDSR.Columns(2).ItemStyle.HorizontalAlign = HorizontalAlign.Center

I get the error message that the index is out of bounds. I thought
that was odd, since there really are 61 columns. So I got the value
of dgDSR.Items.Count and it was 1.

So I guess my question is, can I change the alignment of certain
columns? And if so, what is the proper way to do that?

Thanks,
Jennifer
 
Reply With Quote
 
 
 
 
Scott Mitchell [MVP]
Guest
Posts: n/a
 
      11-18-2004
Jennifer, are you using AutoGenerateColumns=False? If so, you can
specify the alignment specifically, like so:

<asp:BoundColumn ... ItemStyle-HorizontalAlign="Center" ... />

If you are having the column automatically generated, you can
programmatically set their alignment, it's just a matter of doing it at
the right time. Namely, you have to do it after the call to the
DataGrid's DataBind() method. So your code should look something like:

DataGridID.DataSource = ...
DataGridID.DataBind()

'Code to set alignment of columns

hth

--

Scott Mitchell
http://www.velocityreviews.com/forums/(E-Mail Removed)
http://www.4GuysFromRolla.com

* When you think ASP.NET, think 4GuysFromRolla.com!
 
Reply With Quote
 
 
 
 
Jennifer
Guest
Posts: n/a
 
      11-18-2004
Scott,

Thank you for replying. The columns are being automatically generated. I
do try to set the alignment after the data binding. I'm going to post my
almost-full code below (I'm just not going to show the code for each of the
61 columns - that would be too much.) Do you have any other suggestions?
Perhaps the way I am setting up the grid in the first place is wrong?

I appreciate any advice you can give me.

Thanks,
Jennifer


Private Sub FillGrid(ByVal SortExp As String)
Dim dvMain As DataView
Dim X As Int64
Dim dtMain As New DataTable()
Dim DR As DataRow
Dim Update_User As String
If txtStartDate.Text <> "*" Then
If txtEndDate.Text = "*" Then Exit Sub
End If
dvMain = GetDailySales(txtUnitID.Text, txtStartDate.Text,
txtEndDate.Text)
If SortExp <> "" Then
dvMain.Sort = SortExp
End If
Dim Col1, Col2, Col3, Col4, Col5, Col6, Col7, Col8, Col9, Col10 As
String
Dim Col11, Col12, Col13, Col14, Col15, Col16, Col17, Col18, Col19,
Col20 As String
Dim Col21, Col22, Col23, Col24, Col25, Col26, Col27, Col28, Col29,
Col30 As String
Dim Col31, Col32, Col33, Col34, Col35, Col36, Col37, Col38, Col39,
Col40 As String
Dim Col41, Col42, Col43, Col44, Col45, Col46, Col47, Col48, Col49,
Col50, Col51, Col52 As String
Dim Col53, Col54, Col55, Col56, Col57, Col58, Col59, Col60, Col61,
Col62, Col63, Col64 As String


Col1 = "Unit"
Col2 = "Date"
Col3 = "Status"
Col4 = "Deposit" & vbCrLf & "Evening" & vbCrLf & "$"
Col55 = "Deposit" & vbCrLf & "Evening" & vbCrLf & "$" & vbCrLf &
"Verified"
Col5 = "Deposit" & vbCrLf & "Early_Bird" & vbCrLf & "$"
'-----more column names set here------------

dtMain.Columns.Add(Col1)
dtMain.Columns.Add(Col2)
dtMain.Columns.Add(Col3)
dtMain.Columns.Add(Col4)
If chkViewVerif.Checked = True Then dtMain.Columns.Add(Col55)
'-----adding the rest of the columns to the data row here

Dim BD As Date
For X = 0 To dvMain.Count - 1
DR = dtMain.NewRow
DR(Col1) = dvMain(X)("Unit_ID")
BD = dvMain(X)("Business_Date")
DR(Col2) = BD.ToShortDateString
DR(Col3) = dvMain(X)("Status")
If IsDBNull(dvMain(X)("User_ID")) Then
DR(Col50) = dvMain(X)("User_ID")
Else
Update_User = dvMain(X)("User_ID")
DR(Col50) = Update_User.Substring(12)
End If
DR(Col4) = Format(dvMain(X)("Deposit_Eve_Amt"), "N")
If chkViewVerif.Checked = True Then DR(Col55) =
dvMain(X)("Deposit_Eve_Amt_Verified")
'--- assigning the rest of the values here
dtMain.Rows.Add(DR)
Next

dgDSR.DataSource = dtMain
dgDSR.DataBind()
'---trying to align a column here (and it doesn't work)
dgDSR.Columns(2).ItemStyle.HorizontalAlign = HorizontalAlign.Center

End Sub


"Scott Mitchell [MVP]" wrote:

> Jennifer, are you using AutoGenerateColumns=False? If so, you can
> specify the alignment specifically, like so:
>
> <asp:BoundColumn ... ItemStyle-HorizontalAlign="Center" ... />
>
> If you are having the column automatically generated, you can
> programmatically set their alignment, it's just a matter of doing it at
> the right time. Namely, you have to do it after the call to the
> DataGrid's DataBind() method. So your code should look something like:
>
> DataGridID.DataSource = ...
> DataGridID.DataBind()
>
> 'Code to set alignment of columns
>
> hth
>
> --
>
> Scott Mitchell
> (E-Mail Removed)
> http://www.4GuysFromRolla.com
>
> * When you think ASP.NET, think 4GuysFromRolla.com!
>

 
Reply With Quote
 
Scott Mitchell [MVP]
Guest
Posts: n/a
 
      11-18-2004
And if you use the debugger to step through, you see that
dtMain.Columns.Count > 1, but the DataGrid's Columns.Count property = 1?
That is indeed odd.


Jennifer wrote:
> Scott,
>
> Thank you for replying. The columns are being automatically generated. I
> do try to set the alignment after the data binding. I'm going to post my
> almost-full code below (I'm just not going to show the code for each of the
> 61 columns - that would be too much.) Do you have any other suggestions?
> Perhaps the way I am setting up the grid in the first place is wrong?
>
> I appreciate any advice you can give me.
>
> Thanks,
> Jennifer
>
>
> Private Sub FillGrid(ByVal SortExp As String)
> Dim dvMain As DataView
> Dim X As Int64
> Dim dtMain As New DataTable()
> Dim DR As DataRow
> Dim Update_User As String
> If txtStartDate.Text <> "*" Then
> If txtEndDate.Text = "*" Then Exit Sub
> End If
> dvMain = GetDailySales(txtUnitID.Text, txtStartDate.Text,
> txtEndDate.Text)
> If SortExp <> "" Then
> dvMain.Sort = SortExp
> End If
> Dim Col1, Col2, Col3, Col4, Col5, Col6, Col7, Col8, Col9, Col10 As
> String
> Dim Col11, Col12, Col13, Col14, Col15, Col16, Col17, Col18, Col19,
> Col20 As String
> Dim Col21, Col22, Col23, Col24, Col25, Col26, Col27, Col28, Col29,
> Col30 As String
> Dim Col31, Col32, Col33, Col34, Col35, Col36, Col37, Col38, Col39,
> Col40 As String
> Dim Col41, Col42, Col43, Col44, Col45, Col46, Col47, Col48, Col49,
> Col50, Col51, Col52 As String
> Dim Col53, Col54, Col55, Col56, Col57, Col58, Col59, Col60, Col61,
> Col62, Col63, Col64 As String
>
>
> Col1 = "Unit"
> Col2 = "Date"
> Col3 = "Status"
> Col4 = "Deposit" & vbCrLf & "Evening" & vbCrLf & "$"
> Col55 = "Deposit" & vbCrLf & "Evening" & vbCrLf & "$" & vbCrLf &
> "Verified"
> Col5 = "Deposit" & vbCrLf & "Early_Bird" & vbCrLf & "$"
> '-----more column names set here------------
>
> dtMain.Columns.Add(Col1)
> dtMain.Columns.Add(Col2)
> dtMain.Columns.Add(Col3)
> dtMain.Columns.Add(Col4)
> If chkViewVerif.Checked = True Then dtMain.Columns.Add(Col55)
> '-----adding the rest of the columns to the data row here
>
> Dim BD As Date
> For X = 0 To dvMain.Count - 1
> DR = dtMain.NewRow
> DR(Col1) = dvMain(X)("Unit_ID")
> BD = dvMain(X)("Business_Date")
> DR(Col2) = BD.ToShortDateString
> DR(Col3) = dvMain(X)("Status")
> If IsDBNull(dvMain(X)("User_ID")) Then
> DR(Col50) = dvMain(X)("User_ID")
> Else
> Update_User = dvMain(X)("User_ID")
> DR(Col50) = Update_User.Substring(12)
> End If
> DR(Col4) = Format(dvMain(X)("Deposit_Eve_Amt"), "N")
> If chkViewVerif.Checked = True Then DR(Col55) =
> dvMain(X)("Deposit_Eve_Amt_Verified")
> '--- assigning the rest of the values here
> dtMain.Rows.Add(DR)
> Next
>
> dgDSR.DataSource = dtMain
> dgDSR.DataBind()
> '---trying to align a column here (and it doesn't work)
> dgDSR.Columns(2).ItemStyle.HorizontalAlign = HorizontalAlign.Center
>
> End Sub
>
>
> "Scott Mitchell [MVP]" wrote:
>
>
>>Jennifer, are you using AutoGenerateColumns=False? If so, you can
>>specify the alignment specifically, like so:
>>
>><asp:BoundColumn ... ItemStyle-HorizontalAlign="Center" ... />
>>
>>If you are having the column automatically generated, you can
>>programmatically set their alignment, it's just a matter of doing it at
>>the right time. Namely, you have to do it after the call to the
>>DataGrid's DataBind() method. So your code should look something like:
>>
>> DataGridID.DataSource = ...
>> DataGridID.DataBind()
>>
>> 'Code to set alignment of columns
>>
>>hth
>>
>>--
>>
>> Scott Mitchell
>> (E-Mail Removed)
>> http://www.4GuysFromRolla.com
>>
>>* When you think ASP.NET, think 4GuysFromRolla.com!
>>



--

Scott Mitchell
(E-Mail Removed)
http://www.4GuysFromRolla.com

* When you think ASP.NET, think 4GuysFromRolla.com!
 
Reply With Quote
 
Jennifer
Guest
Posts: n/a
 
      11-19-2004
Yes, that is exactly the case. I am stumped. Any suggestions? Is this
perhaps caused by how I am filling the datagrid? I'm no expert at datagrids
and my experience with them is limited. I'd love any advice.

Thank you for all your help!

Jennifer


"Scott Mitchell [MVP]" wrote:

> And if you use the debugger to step through, you see that
> dtMain.Columns.Count > 1, but the DataGrid's Columns.Count property = 1?
> That is indeed odd.
>
>
> Jennifer wrote:
> > Scott,
> >
> > Thank you for replying. The columns are being automatically generated. I
> > do try to set the alignment after the data binding. I'm going to post my
> > almost-full code below (I'm just not going to show the code for each of the
> > 61 columns - that would be too much.) Do you have any other suggestions?
> > Perhaps the way I am setting up the grid in the first place is wrong?
> >
> > I appreciate any advice you can give me.
> >
> > Thanks,
> > Jennifer
> >
> >
> > Private Sub FillGrid(ByVal SortExp As String)
> > Dim dvMain As DataView
> > Dim X As Int64
> > Dim dtMain As New DataTable()
> > Dim DR As DataRow
> > Dim Update_User As String
> > If txtStartDate.Text <> "*" Then
> > If txtEndDate.Text = "*" Then Exit Sub
> > End If
> > dvMain = GetDailySales(txtUnitID.Text, txtStartDate.Text,
> > txtEndDate.Text)
> > If SortExp <> "" Then
> > dvMain.Sort = SortExp
> > End If
> > Dim Col1, Col2, Col3, Col4, Col5, Col6, Col7, Col8, Col9, Col10 As
> > String
> > Dim Col11, Col12, Col13, Col14, Col15, Col16, Col17, Col18, Col19,
> > Col20 As String
> > Dim Col21, Col22, Col23, Col24, Col25, Col26, Col27, Col28, Col29,
> > Col30 As String
> > Dim Col31, Col32, Col33, Col34, Col35, Col36, Col37, Col38, Col39,
> > Col40 As String
> > Dim Col41, Col42, Col43, Col44, Col45, Col46, Col47, Col48, Col49,
> > Col50, Col51, Col52 As String
> > Dim Col53, Col54, Col55, Col56, Col57, Col58, Col59, Col60, Col61,
> > Col62, Col63, Col64 As String
> >
> >
> > Col1 = "Unit"
> > Col2 = "Date"
> > Col3 = "Status"
> > Col4 = "Deposit" & vbCrLf & "Evening" & vbCrLf & "$"
> > Col55 = "Deposit" & vbCrLf & "Evening" & vbCrLf & "$" & vbCrLf &
> > "Verified"
> > Col5 = "Deposit" & vbCrLf & "Early_Bird" & vbCrLf & "$"
> > '-----more column names set here------------
> >
> > dtMain.Columns.Add(Col1)
> > dtMain.Columns.Add(Col2)
> > dtMain.Columns.Add(Col3)
> > dtMain.Columns.Add(Col4)
> > If chkViewVerif.Checked = True Then dtMain.Columns.Add(Col55)
> > '-----adding the rest of the columns to the data row here
> >
> > Dim BD As Date
> > For X = 0 To dvMain.Count - 1
> > DR = dtMain.NewRow
> > DR(Col1) = dvMain(X)("Unit_ID")
> > BD = dvMain(X)("Business_Date")
> > DR(Col2) = BD.ToShortDateString
> > DR(Col3) = dvMain(X)("Status")
> > If IsDBNull(dvMain(X)("User_ID")) Then
> > DR(Col50) = dvMain(X)("User_ID")
> > Else
> > Update_User = dvMain(X)("User_ID")
> > DR(Col50) = Update_User.Substring(12)
> > End If
> > DR(Col4) = Format(dvMain(X)("Deposit_Eve_Amt"), "N")
> > If chkViewVerif.Checked = True Then DR(Col55) =
> > dvMain(X)("Deposit_Eve_Amt_Verified")
> > '--- assigning the rest of the values here
> > dtMain.Rows.Add(DR)
> > Next
> >
> > dgDSR.DataSource = dtMain
> > dgDSR.DataBind()
> > '---trying to align a column here (and it doesn't work)
> > dgDSR.Columns(2).ItemStyle.HorizontalAlign = HorizontalAlign.Center
> >
> > End Sub
> >
> >
> > "Scott Mitchell [MVP]" wrote:
> >
> >
> >>Jennifer, are you using AutoGenerateColumns=False? If so, you can
> >>specify the alignment specifically, like so:
> >>
> >><asp:BoundColumn ... ItemStyle-HorizontalAlign="Center" ... />
> >>
> >>If you are having the column automatically generated, you can
> >>programmatically set their alignment, it's just a matter of doing it at
> >>the right time. Namely, you have to do it after the call to the
> >>DataGrid's DataBind() method. So your code should look something like:
> >>
> >> DataGridID.DataSource = ...
> >> DataGridID.DataBind()
> >>
> >> 'Code to set alignment of columns
> >>
> >>hth
> >>
> >>--
> >>
> >> Scott Mitchell
> >> (E-Mail Removed)
> >> http://www.4GuysFromRolla.com
> >>
> >>* When you think ASP.NET, think 4GuysFromRolla.com!
> >>

>
>
> --
>
> Scott Mitchell
> (E-Mail Removed)
> http://www.4GuysFromRolla.com
>
> * When you think ASP.NET, think 4GuysFromRolla.com!
>

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Aligning gridview columns with a custom header Carlos ASP .Net 0 08-14-2006 07:53 PM
Exporting data from (All columns in data grid EXCEPT THE 1st) to E =?Utf-8?B?cG11ZA==?= ASP .Net 2 01-10-2005 07:53 PM
aligning datagrid columns =?Utf-8?B?SmVubmlmZXI=?= ASP .Net 1 11-22-2004 05:03 PM
Aligning DataGrid Columns!! Anthony Judd ASP .Net Datagrid Control 1 11-01-2004 02:43 AM
Problems with dynamically aligning columns across multiple tablesusing JavaScript and DOM Matthew Van Gundy Javascript 0 11-04-2003 01:13 AM



Advertisments