Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > Change order of columns in DataGrid dynamically

Reply
Thread Tools

Change order of columns in DataGrid dynamically

 
 
tshad
Guest
Posts: n/a
 
      08-23-2007
I am trying to allow my clients to specify the order that columns show in a
datagrid.

If I have a Datagrid like so:

<aspataGrid
Visible=true
AllowSorting="false"
AutoGenerateColumns="false"
CellPadding="0"
CellSpacing="0"
ID="DataGrid2"
runat="server"
ShowFooter="false"
ShowHeader="true"
OnSortCommand="SortDataGrid"
BorderWidth="0"
BorderColor="#999999"
Width="701px"
style="padding-right:5px">
<headerstyle Font-Bold="true" />
<alternatingitemstyle CssClass="alternateRows" />
<footerstyle BackColor="#E8EBFD" ForeColor="#3D3DB6" Font-Bold="true"
/>
<pagerstyle BackColor="white" />
<columns>
<asp:TemplateColumn sortexpression="JobTitle"
ItemStyle-Width="190px" HeaderStyle-Width="190px"
headertext="Job Title" ItemStyle-VerticalAlign="Top"
runat="server">
<ItemTemplate>
<asp:HyperLink ID="JobTitle"
NavigateURL='<%# "displayPositionNew.aspx?PositionID=" &
Container.DataItem("PositionID") %>'
Text='<%# Container.DataItem("JobTitle")%>'
OnPreRender="FixHyperLink"
runat="server"/>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn ItemStyle-Width="150" DataField="Company"
HeaderText="Company"
ReadOnly="true"
Visible="True"
ItemStyle-VerticalAlign="Top"
SortExpression="Company"/>
<asp:BoundColumn ItemStyle-Width="110" DataField="Location"
HeaderText="Location"
ReadOnly="true"
Visible="True"
ItemStyle-VerticalAlign="Top"
SortExpression="Location"/>
</columns>
</aspataGrid>

I have 3 columns: JobTitle, Company and Location - in that order.

But one client may want the client to be Company, Location, JobTitle and
another may want it to be Location, JobTitle,Company.

Is there a way to change the order of the columns as they are displayed?

I mentioned in another post that I change the size of the DataGrid and hide
columns in my PreRender event, like so:

DataGrid1.Width = new Unit("551px")
for each col as DataGridColumn in DataGrid1.Columns
if col.HeaderText = "Company" orElse col.HeaderText = "Posted" then
col.Visible = false
end if
next

Can I do something like this to also change the order in the table?

Thanks,

Tom


 
Reply With Quote
 
 
 
 
Eliyahu Goldin
Guest
Posts: n/a
 
      08-23-2007
You just need to operate on DataGrid.Columns collection in code-behind. Look
at the DataGridColumnCollection class, it has a few methods like AddAt that
can help you.

--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net


"tshad" <> wrote in message
news:...
>I am trying to allow my clients to specify the order that columns show in a
>datagrid.
>
> If I have a Datagrid like so:
>
> <aspataGrid
> Visible=true
> AllowSorting="false"
> AutoGenerateColumns="false"
> CellPadding="0"
> CellSpacing="0"
> ID="DataGrid2"
> runat="server"
> ShowFooter="false"
> ShowHeader="true"
> OnSortCommand="SortDataGrid"
> BorderWidth="0"
> BorderColor="#999999"
> Width="701px"
> style="padding-right:5px">
> <headerstyle Font-Bold="true" />
> <alternatingitemstyle CssClass="alternateRows" />
> <footerstyle BackColor="#E8EBFD" ForeColor="#3D3DB6"
> Font-Bold="true" />
> <pagerstyle BackColor="white" />
> <columns>
> <asp:TemplateColumn sortexpression="JobTitle"
> ItemStyle-Width="190px" HeaderStyle-Width="190px"
> headertext="Job Title" ItemStyle-VerticalAlign="Top"
> runat="server">
> <ItemTemplate>
> <asp:HyperLink ID="JobTitle"
> NavigateURL='<%# "displayPositionNew.aspx?PositionID=" &
> Container.DataItem("PositionID") %>'
> Text='<%# Container.DataItem("JobTitle")%>'
> OnPreRender="FixHyperLink"
> runat="server"/>
> </ItemTemplate>
> </asp:TemplateColumn>
> <asp:BoundColumn ItemStyle-Width="150" DataField="Company"
> HeaderText="Company"
> ReadOnly="true"
> Visible="True"
> ItemStyle-VerticalAlign="Top"
> SortExpression="Company"/>
> <asp:BoundColumn ItemStyle-Width="110" DataField="Location"
> HeaderText="Location"
> ReadOnly="true"
> Visible="True"
> ItemStyle-VerticalAlign="Top"
> SortExpression="Location"/>
> </columns>
> </aspataGrid>
>
> I have 3 columns: JobTitle, Company and Location - in that order.
>
> But one client may want the client to be Company, Location, JobTitle and
> another may want it to be Location, JobTitle,Company.
>
> Is there a way to change the order of the columns as they are displayed?
>
> I mentioned in another post that I change the size of the DataGrid and
> hide columns in my PreRender event, like so:
>
> DataGrid1.Width = new Unit("551px")
> for each col as DataGridColumn in DataGrid1.Columns
> if col.HeaderText = "Company" orElse col.HeaderText = "Posted" then
> col.Visible = false
> end if
> next
>
> Can I do something like this to also change the order in the table?
>
> Thanks,
>
> Tom
>



 
Reply With Quote
 
 
 
 
tshad
Guest
Posts: n/a
 
      08-23-2007
"Eliyahu Goldin" <> wrote in
message news:...
> You just need to operate on DataGrid.Columns collection in code-behind.
> Look at the DataGridColumnCollection class, it has a few methods like
> AddAt that can help you.


I will look at that but I am not using code behind. I build all my pages in
DW and am using .net 1.1.

Also, AddAt or Insert is for creating new columns than adding them to the
DataGrid.

What I was hoping to do was to change the order of the columns already set
up in the DataGrid object below, either in the Page_Load or Page_PreRender
event. Since you can add a new column at the beginning of the column list
using AddAt or Insert (which would in effect change the order of the
columns) - is there a way to say move columns(2) to columns(1) some way?

Thanks,

Tom
>
> --
> Eliyahu Goldin,
> Software Developer
> Microsoft MVP [ASP.NET]
> http://msmvps.com/blogs/egoldin
> http://usableasp.net
>
>
> "tshad" <> wrote in message
> news:...
>>I am trying to allow my clients to specify the order that columns show in
>>a datagrid.
>>
>> If I have a Datagrid like so:
>>
>> <aspataGrid
>> Visible=true
>> AllowSorting="false"
>> AutoGenerateColumns="false"
>> CellPadding="0"
>> CellSpacing="0"
>> ID="DataGrid2"
>> runat="server"
>> ShowFooter="false"
>> ShowHeader="true"
>> OnSortCommand="SortDataGrid"
>> BorderWidth="0"
>> BorderColor="#999999"
>> Width="701px"
>> style="padding-right:5px">
>> <headerstyle Font-Bold="true" />
>> <alternatingitemstyle CssClass="alternateRows" />
>> <footerstyle BackColor="#E8EBFD" ForeColor="#3D3DB6"
>> Font-Bold="true" />
>> <pagerstyle BackColor="white" />
>> <columns>
>> <asp:TemplateColumn sortexpression="JobTitle"
>> ItemStyle-Width="190px" HeaderStyle-Width="190px"
>> headertext="Job Title" ItemStyle-VerticalAlign="Top"
>> runat="server">
>> <ItemTemplate>
>> <asp:HyperLink ID="JobTitle"
>> NavigateURL='<%# "displayPositionNew.aspx?PositionID=" &
>> Container.DataItem("PositionID") %>'
>> Text='<%# Container.DataItem("JobTitle")%>'
>> OnPreRender="FixHyperLink"
>> runat="server"/>
>> </ItemTemplate>
>> </asp:TemplateColumn>
>> <asp:BoundColumn ItemStyle-Width="150" DataField="Company"
>> HeaderText="Company"
>> ReadOnly="true"
>> Visible="True"
>> ItemStyle-VerticalAlign="Top"
>> SortExpression="Company"/>
>> <asp:BoundColumn ItemStyle-Width="110" DataField="Location"
>> HeaderText="Location"
>> ReadOnly="true"
>> Visible="True"
>> ItemStyle-VerticalAlign="Top"
>> SortExpression="Location"/>
>> </columns>
>> </aspataGrid>
>>
>> I have 3 columns: JobTitle, Company and Location - in that order.
>>
>> But one client may want the client to be Company, Location, JobTitle and
>> another may want it to be Location, JobTitle,Company.
>>
>> Is there a way to change the order of the columns as they are displayed?
>>
>> I mentioned in another post that I change the size of the DataGrid and
>> hide columns in my PreRender event, like so:
>>
>> DataGrid1.Width = new Unit("551px")
>> for each col as DataGridColumn in DataGrid1.Columns
>> if col.HeaderText = "Company" orElse col.HeaderText = "Posted" then
>> col.Visible = false
>> end if
>> next
>>
>> Can I do something like this to also change the order in the table?
>>
>> Thanks,
>>
>> Tom
>>

>
>



 
Reply With Quote
 
Eliyahu Goldin
Guest
Posts: n/a
 
      08-26-2007
> What I was hoping to do was to change the order of the columns already set
> up in the DataGrid object below, either in the Page_Load or Page_PreRender
> event. Since you can add a new column at the beginning of the column list
> using AddAt or Insert (which would in effect change the order of the
> columns) - is there a way to say move columns(2) to columns(1) some way?


Make a copy of columns(2), remove columns(2) from the grid and add it again
with AddAt(0). This will move columns(2) to columns(1).

--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net


"tshad" <> wrote in message
news:...
> "Eliyahu Goldin" <> wrote in
> message news:...
>> You just need to operate on DataGrid.Columns collection in code-behind.
>> Look at the DataGridColumnCollection class, it has a few methods like
>> AddAt that can help you.

>
> I will look at that but I am not using code behind. I build all my pages
> in DW and am using .net 1.1.
>
> Also, AddAt or Insert is for creating new columns than adding them to the
> DataGrid.
>
> What I was hoping to do was to change the order of the columns already set
> up in the DataGrid object below, either in the Page_Load or Page_PreRender
> event. Since you can add a new column at the beginning of the column list
> using AddAt or Insert (which would in effect change the order of the
> columns) - is there a way to say move columns(2) to columns(1) some way?
>
> Thanks,
>
> Tom
>>
>> --
>> Eliyahu Goldin,
>> Software Developer
>> Microsoft MVP [ASP.NET]
>> http://msmvps.com/blogs/egoldin
>> http://usableasp.net
>>
>>
>> "tshad" <> wrote in message
>> news:...
>>>I am trying to allow my clients to specify the order that columns show in
>>>a datagrid.
>>>
>>> If I have a Datagrid like so:
>>>
>>> <aspataGrid
>>> Visible=true
>>> AllowSorting="false"
>>> AutoGenerateColumns="false"
>>> CellPadding="0"
>>> CellSpacing="0"
>>> ID="DataGrid2"
>>> runat="server"
>>> ShowFooter="false"
>>> ShowHeader="true"
>>> OnSortCommand="SortDataGrid"
>>> BorderWidth="0"
>>> BorderColor="#999999"
>>> Width="701px"
>>> style="padding-right:5px">
>>> <headerstyle Font-Bold="true" />
>>> <alternatingitemstyle CssClass="alternateRows" />
>>> <footerstyle BackColor="#E8EBFD" ForeColor="#3D3DB6"
>>> Font-Bold="true" />
>>> <pagerstyle BackColor="white" />
>>> <columns>
>>> <asp:TemplateColumn sortexpression="JobTitle"
>>> ItemStyle-Width="190px" HeaderStyle-Width="190px"
>>> headertext="Job Title" ItemStyle-VerticalAlign="Top"
>>> runat="server">
>>> <ItemTemplate>
>>> <asp:HyperLink ID="JobTitle"
>>> NavigateURL='<%# "displayPositionNew.aspx?PositionID=" &
>>> Container.DataItem("PositionID") %>'
>>> Text='<%# Container.DataItem("JobTitle")%>'
>>> OnPreRender="FixHyperLink"
>>> runat="server"/>
>>> </ItemTemplate>
>>> </asp:TemplateColumn>
>>> <asp:BoundColumn ItemStyle-Width="150" DataField="Company"
>>> HeaderText="Company"
>>> ReadOnly="true"
>>> Visible="True"
>>> ItemStyle-VerticalAlign="Top"
>>> SortExpression="Company"/>
>>> <asp:BoundColumn ItemStyle-Width="110" DataField="Location"
>>> HeaderText="Location"
>>> ReadOnly="true"
>>> Visible="True"
>>> ItemStyle-VerticalAlign="Top"
>>> SortExpression="Location"/>
>>> </columns>
>>> </aspataGrid>
>>>
>>> I have 3 columns: JobTitle, Company and Location - in that order.
>>>
>>> But one client may want the client to be Company, Location, JobTitle and
>>> another may want it to be Location, JobTitle,Company.
>>>
>>> Is there a way to change the order of the columns as they are displayed?
>>>
>>> I mentioned in another post that I change the size of the DataGrid and
>>> hide columns in my PreRender event, like so:
>>>
>>> DataGrid1.Width = new Unit("551px")
>>> for each col as DataGridColumn in DataGrid1.Columns
>>> if col.HeaderText = "Company" orElse col.HeaderText = "Posted" then
>>> col.Visible = false
>>> end if
>>> next
>>>
>>> Can I do something like this to also change the order in the table?
>>>
>>> Thanks,
>>>
>>> Tom
>>>

>>
>>

>
>



 
Reply With Quote
 
tshad
Guest
Posts: n/a
 
      08-28-2007
"Eliyahu Goldin" <> wrote in
message news:...
>> What I was hoping to do was to change the order of the columns already
>> set up in the DataGrid object below, either in the Page_Load or
>> Page_PreRender event. Since you can add a new column at the beginning of
>> the column list using AddAt or Insert (which would in effect change the
>> order of the columns) - is there a way to say move columns(2) to
>> columns(1) some way?

>
> Make a copy of columns(2), remove columns(2) from the grid and add it
> again with AddAt(0). This will move columns(2) to columns(1).


That's sounds like a great idea.

I understand how AddAt works , but how do you copy one column and remove
another?

CopyAt will copy all the columns into an array (I think) - but I am not sure
how I delete the columns that add the array back into the array.

Also, I plan to do this in my Page_Load/"not IsPostback" event. Will this
change carry over to my next page or do I need to do it again at each
PostBack?

Thanks,

Tom
>
> --
> Eliyahu Goldin,
> Software Developer
> Microsoft MVP [ASP.NET]
> http://msmvps.com/blogs/egoldin
> http://usableasp.net
>
>
> "tshad" <> wrote in message
> news:...
>> "Eliyahu Goldin" <> wrote in
>> message news:...
>>> You just need to operate on DataGrid.Columns collection in code-behind.
>>> Look at the DataGridColumnCollection class, it has a few methods like
>>> AddAt that can help you.

>>
>> I will look at that but I am not using code behind. I build all my pages
>> in DW and am using .net 1.1.
>>
>> Also, AddAt or Insert is for creating new columns than adding them to the
>> DataGrid.
>>
>> What I was hoping to do was to change the order of the columns already
>> set up in the DataGrid object below, either in the Page_Load or
>> Page_PreRender event. Since you can add a new column at the beginning of
>> the column list using AddAt or Insert (which would in effect change the
>> order of the columns) - is there a way to say move columns(2) to
>> columns(1) some way?
>>
>> Thanks,
>>
>> Tom
>>>
>>> --
>>> Eliyahu Goldin,
>>> Software Developer
>>> Microsoft MVP [ASP.NET]
>>> http://msmvps.com/blogs/egoldin
>>> http://usableasp.net
>>>
>>>
>>> "tshad" <> wrote in message
>>> news:...
>>>>I am trying to allow my clients to specify the order that columns show
>>>>in a datagrid.
>>>>
>>>> If I have a Datagrid like so:
>>>>
>>>> <aspataGrid
>>>> Visible=true
>>>> AllowSorting="false"
>>>> AutoGenerateColumns="false"
>>>> CellPadding="0"
>>>> CellSpacing="0"
>>>> ID="DataGrid2"
>>>> runat="server"
>>>> ShowFooter="false"
>>>> ShowHeader="true"
>>>> OnSortCommand="SortDataGrid"
>>>> BorderWidth="0"
>>>> BorderColor="#999999"
>>>> Width="701px"
>>>> style="padding-right:5px">
>>>> <headerstyle Font-Bold="true" />
>>>> <alternatingitemstyle CssClass="alternateRows" />
>>>> <footerstyle BackColor="#E8EBFD" ForeColor="#3D3DB6"
>>>> Font-Bold="true" />
>>>> <pagerstyle BackColor="white" />
>>>> <columns>
>>>> <asp:TemplateColumn sortexpression="JobTitle"
>>>> ItemStyle-Width="190px" HeaderStyle-Width="190px"
>>>> headertext="Job Title" ItemStyle-VerticalAlign="Top"
>>>> runat="server">
>>>> <ItemTemplate>
>>>> <asp:HyperLink ID="JobTitle"
>>>> NavigateURL='<%# "displayPositionNew.aspx?PositionID=" &
>>>> Container.DataItem("PositionID") %>'
>>>> Text='<%# Container.DataItem("JobTitle")%>'
>>>> OnPreRender="FixHyperLink"
>>>> runat="server"/>
>>>> </ItemTemplate>
>>>> </asp:TemplateColumn>
>>>> <asp:BoundColumn ItemStyle-Width="150" DataField="Company"
>>>> HeaderText="Company"
>>>> ReadOnly="true"
>>>> Visible="True"
>>>> ItemStyle-VerticalAlign="Top"
>>>> SortExpression="Company"/>
>>>> <asp:BoundColumn ItemStyle-Width="110" DataField="Location"
>>>> HeaderText="Location"
>>>> ReadOnly="true"
>>>> Visible="True"
>>>> ItemStyle-VerticalAlign="Top"
>>>> SortExpression="Location"/>
>>>> </columns>
>>>> </aspataGrid>
>>>>
>>>> I have 3 columns: JobTitle, Company and Location - in that order.
>>>>
>>>> But one client may want the client to be Company, Location, JobTitle
>>>> and another may want it to be Location, JobTitle,Company.
>>>>
>>>> Is there a way to change the order of the columns as they are
>>>> displayed?
>>>>
>>>> I mentioned in another post that I change the size of the DataGrid and
>>>> hide columns in my PreRender event, like so:
>>>>
>>>> DataGrid1.Width = new Unit("551px")
>>>> for each col as DataGridColumn in DataGrid1.Columns
>>>> if col.HeaderText = "Company" orElse col.HeaderText = "Posted" then
>>>> col.Visible = false
>>>> end if
>>>> next
>>>>
>>>> Can I do something like this to also change the order in the table?
>>>>
>>>> Thanks,
>>>>
>>>> Tom
>>>>
>>>
>>>

>>
>>

>
>



 
Reply With Quote
 
Eliyahu Goldin
Guest
Posts: n/a
 
      08-28-2007
That's right. CopyAt is good for copying and RemoveAt for deleting. Than you
can AddAt an individual item from the array.

--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net


"tshad" <> wrote in message
news:OUzBa%...
> "Eliyahu Goldin" <> wrote in
> message news:...
>>> What I was hoping to do was to change the order of the columns already
>>> set up in the DataGrid object below, either in the Page_Load or
>>> Page_PreRender event. Since you can add a new column at the beginning
>>> of the column list using AddAt or Insert (which would in effect change
>>> the order of the columns) - is there a way to say move columns(2) to
>>> columns(1) some way?

>>
>> Make a copy of columns(2), remove columns(2) from the grid and add it
>> again with AddAt(0). This will move columns(2) to columns(1).

>
> That's sounds like a great idea.
>
> I understand how AddAt works , but how do you copy one column and remove
> another?
>
> CopyAt will copy all the columns into an array (I think) - but I am not
> sure how I delete the columns that add the array back into the array.
>
> Also, I plan to do this in my Page_Load/"not IsPostback" event. Will this
> change carry over to my next page or do I need to do it again at each
> PostBack?
>
> Thanks,
>
> Tom
>>
>> --
>> Eliyahu Goldin,
>> Software Developer
>> Microsoft MVP [ASP.NET]
>> http://msmvps.com/blogs/egoldin
>> http://usableasp.net
>>
>>
>> "tshad" <> wrote in message
>> news:...
>>> "Eliyahu Goldin" <> wrote in
>>> message news:...
>>>> You just need to operate on DataGrid.Columns collection in code-behind.
>>>> Look at the DataGridColumnCollection class, it has a few methods like
>>>> AddAt that can help you.
>>>
>>> I will look at that but I am not using code behind. I build all my
>>> pages in DW and am using .net 1.1.
>>>
>>> Also, AddAt or Insert is for creating new columns than adding them to
>>> the DataGrid.
>>>
>>> What I was hoping to do was to change the order of the columns already
>>> set up in the DataGrid object below, either in the Page_Load or
>>> Page_PreRender event. Since you can add a new column at the beginning
>>> of the column list using AddAt or Insert (which would in effect change
>>> the order of the columns) - is there a way to say move columns(2) to
>>> columns(1) some way?
>>>
>>> Thanks,
>>>
>>> Tom
>>>>
>>>> --
>>>> Eliyahu Goldin,
>>>> Software Developer
>>>> Microsoft MVP [ASP.NET]
>>>> http://msmvps.com/blogs/egoldin
>>>> http://usableasp.net
>>>>
>>>>
>>>> "tshad" <> wrote in message
>>>> news:...
>>>>>I am trying to allow my clients to specify the order that columns show
>>>>>in a datagrid.
>>>>>
>>>>> If I have a Datagrid like so:
>>>>>
>>>>> <aspataGrid
>>>>> Visible=true
>>>>> AllowSorting="false"
>>>>> AutoGenerateColumns="false"
>>>>> CellPadding="0"
>>>>> CellSpacing="0"
>>>>> ID="DataGrid2"
>>>>> runat="server"
>>>>> ShowFooter="false"
>>>>> ShowHeader="true"
>>>>> OnSortCommand="SortDataGrid"
>>>>> BorderWidth="0"
>>>>> BorderColor="#999999"
>>>>> Width="701px"
>>>>> style="padding-right:5px">
>>>>> <headerstyle Font-Bold="true" />
>>>>> <alternatingitemstyle CssClass="alternateRows" />
>>>>> <footerstyle BackColor="#E8EBFD" ForeColor="#3D3DB6"
>>>>> Font-Bold="true" />
>>>>> <pagerstyle BackColor="white" />
>>>>> <columns>
>>>>> <asp:TemplateColumn sortexpression="JobTitle"
>>>>> ItemStyle-Width="190px" HeaderStyle-Width="190px"
>>>>> headertext="Job Title" ItemStyle-VerticalAlign="Top"
>>>>> runat="server">
>>>>> <ItemTemplate>
>>>>> <asp:HyperLink ID="JobTitle"
>>>>> NavigateURL='<%# "displayPositionNew.aspx?PositionID=" &
>>>>> Container.DataItem("PositionID") %>'
>>>>> Text='<%# Container.DataItem("JobTitle")%>'
>>>>> OnPreRender="FixHyperLink"
>>>>> runat="server"/>
>>>>> </ItemTemplate>
>>>>> </asp:TemplateColumn>
>>>>> <asp:BoundColumn ItemStyle-Width="150" DataField="Company"
>>>>> HeaderText="Company"
>>>>> ReadOnly="true"
>>>>> Visible="True"
>>>>> ItemStyle-VerticalAlign="Top"
>>>>> SortExpression="Company"/>
>>>>> <asp:BoundColumn ItemStyle-Width="110" DataField="Location"
>>>>> HeaderText="Location"
>>>>> ReadOnly="true"
>>>>> Visible="True"
>>>>> ItemStyle-VerticalAlign="Top"
>>>>> SortExpression="Location"/>
>>>>> </columns>
>>>>> </aspataGrid>
>>>>>
>>>>> I have 3 columns: JobTitle, Company and Location - in that order.
>>>>>
>>>>> But one client may want the client to be Company, Location, JobTitle
>>>>> and another may want it to be Location, JobTitle,Company.
>>>>>
>>>>> Is there a way to change the order of the columns as they are
>>>>> displayed?
>>>>>
>>>>> I mentioned in another post that I change the size of the DataGrid and
>>>>> hide columns in my PreRender event, like so:
>>>>>
>>>>> DataGrid1.Width = new Unit("551px")
>>>>> for each col as DataGridColumn in DataGrid1.Columns
>>>>> if col.HeaderText = "Company" orElse col.HeaderText = "Posted"
>>>>> then
>>>>> col.Visible = false
>>>>> end if
>>>>> next
>>>>>
>>>>> Can I do something like this to also change the order in the table?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Tom
>>>>>
>>>>
>>>>
>>>
>>>

>>
>>

>
>



 
Reply With Quote
 
tshad
Guest
Posts: n/a
 
      08-28-2007
"Eliyahu Goldin" <> wrote in
message news:%...
> That's right. CopyAt is good for copying and RemoveAt for deleting. Than
> you can AddAt an individual item from the array.


I assume you mean CopyTo?

I am having a problem doing the CopyTo. Do you have to do it after you
bind? I am just trying to change the order of the columns in the Page_Load
event before any binding is done.

I tried:

Dim theArray() as DataGridColumn
DataGrid2.Columns.CopyTo(theArray,0) -- error Object reference not set to
an instance of an object

I also tried:

Dim theArray(3) as DataGridColumn
DataGrid2.Columns.CopyTo(theArray,0) -- error
System.IndexOutOfRangeException: Index was outside the bounds of the array

Not sure what the problem is here.

Thanks,

Tom
>
> --
> Eliyahu Goldin,
> Software Developer
> Microsoft MVP [ASP.NET]
> http://msmvps.com/blogs/egoldin
> http://usableasp.net
>
>
> "tshad" <> wrote in message
> news:OUzBa%...
>> "Eliyahu Goldin" <> wrote in
>> message news:...
>>>> What I was hoping to do was to change the order of the columns already
>>>> set up in the DataGrid object below, either in the Page_Load or
>>>> Page_PreRender event. Since you can add a new column at the beginning
>>>> of the column list using AddAt or Insert (which would in effect change
>>>> the order of the columns) - is there a way to say move columns(2) to
>>>> columns(1) some way?
>>>
>>> Make a copy of columns(2), remove columns(2) from the grid and add it
>>> again with AddAt(0). This will move columns(2) to columns(1).

>>
>> That's sounds like a great idea.
>>
>> I understand how AddAt works , but how do you copy one column and remove
>> another?
>>
>> CopyAt will copy all the columns into an array (I think) - but I am not
>> sure how I delete the columns that add the array back into the array.
>>
>> Also, I plan to do this in my Page_Load/"not IsPostback" event. Will
>> this change carry over to my next page or do I need to do it again at
>> each PostBack?
>>
>> Thanks,
>>
>> Tom
>>>
>>> --
>>> Eliyahu Goldin,
>>> Software Developer
>>> Microsoft MVP [ASP.NET]
>>> http://msmvps.com/blogs/egoldin
>>> http://usableasp.net
>>>
>>>
>>> "tshad" <> wrote in message
>>> news:...
>>>> "Eliyahu Goldin" <> wrote in
>>>> message news:...
>>>>> You just need to operate on DataGrid.Columns collection in
>>>>> code-behind. Look at the DataGridColumnCollection class, it has a few
>>>>> methods like AddAt that can help you.
>>>>
>>>> I will look at that but I am not using code behind. I build all my
>>>> pages in DW and am using .net 1.1.
>>>>
>>>> Also, AddAt or Insert is for creating new columns than adding them to
>>>> the DataGrid.
>>>>
>>>> What I was hoping to do was to change the order of the columns already
>>>> set up in the DataGrid object below, either in the Page_Load or
>>>> Page_PreRender event. Since you can add a new column at the beginning
>>>> of the column list using AddAt or Insert (which would in effect change
>>>> the order of the columns) - is there a way to say move columns(2) to
>>>> columns(1) some way?
>>>>
>>>> Thanks,
>>>>
>>>> Tom
>>>>>
>>>>> --
>>>>> Eliyahu Goldin,
>>>>> Software Developer
>>>>> Microsoft MVP [ASP.NET]
>>>>> http://msmvps.com/blogs/egoldin
>>>>> http://usableasp.net
>>>>>
>>>>>
>>>>> "tshad" <> wrote in message
>>>>> news:...
>>>>>>I am trying to allow my clients to specify the order that columns show
>>>>>>in a datagrid.
>>>>>>
>>>>>> If I have a Datagrid like so:
>>>>>>
>>>>>> <aspataGrid
>>>>>> Visible=true
>>>>>> AllowSorting="false"
>>>>>> AutoGenerateColumns="false"
>>>>>> CellPadding="0"
>>>>>> CellSpacing="0"
>>>>>> ID="DataGrid2"
>>>>>> runat="server"
>>>>>> ShowFooter="false"
>>>>>> ShowHeader="true"
>>>>>> OnSortCommand="SortDataGrid"
>>>>>> BorderWidth="0"
>>>>>> BorderColor="#999999"
>>>>>> Width="701px"
>>>>>> style="padding-right:5px">
>>>>>> <headerstyle Font-Bold="true" />
>>>>>> <alternatingitemstyle CssClass="alternateRows" />
>>>>>> <footerstyle BackColor="#E8EBFD" ForeColor="#3D3DB6"
>>>>>> Font-Bold="true" />
>>>>>> <pagerstyle BackColor="white" />
>>>>>> <columns>
>>>>>> <asp:TemplateColumn sortexpression="JobTitle"
>>>>>> ItemStyle-Width="190px" HeaderStyle-Width="190px"
>>>>>> headertext="Job Title" ItemStyle-VerticalAlign="Top"
>>>>>> runat="server">
>>>>>> <ItemTemplate>
>>>>>> <asp:HyperLink ID="JobTitle"
>>>>>> NavigateURL='<%# "displayPositionNew.aspx?PositionID=" &
>>>>>> Container.DataItem("PositionID") %>'
>>>>>> Text='<%# Container.DataItem("JobTitle")%>'
>>>>>> OnPreRender="FixHyperLink"
>>>>>> runat="server"/>
>>>>>> </ItemTemplate>
>>>>>> </asp:TemplateColumn>
>>>>>> <asp:BoundColumn ItemStyle-Width="150" DataField="Company"
>>>>>> HeaderText="Company"
>>>>>> ReadOnly="true"
>>>>>> Visible="True"
>>>>>> ItemStyle-VerticalAlign="Top"
>>>>>> SortExpression="Company"/>
>>>>>> <asp:BoundColumn ItemStyle-Width="110" DataField="Location"
>>>>>> HeaderText="Location"
>>>>>> ReadOnly="true"
>>>>>> Visible="True"
>>>>>> ItemStyle-VerticalAlign="Top"
>>>>>> SortExpression="Location"/>
>>>>>> </columns>
>>>>>> </aspataGrid>
>>>>>>
>>>>>> I have 3 columns: JobTitle, Company and Location - in that order.
>>>>>>
>>>>>> But one client may want the client to be Company, Location, JobTitle
>>>>>> and another may want it to be Location, JobTitle,Company.
>>>>>>
>>>>>> Is there a way to change the order of the columns as they are
>>>>>> displayed?
>>>>>>
>>>>>> I mentioned in another post that I change the size of the DataGrid
>>>>>> and hide columns in my PreRender event, like so:
>>>>>>
>>>>>> DataGrid1.Width = new Unit("551px")
>>>>>> for each col as DataGridColumn in DataGrid1.Columns
>>>>>> if col.HeaderText = "Company" orElse col.HeaderText = "Posted"
>>>>>> then
>>>>>> col.Visible = false
>>>>>> end if
>>>>>> next
>>>>>>
>>>>>> Can I do something like this to also change the order in the table?
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> Tom
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>

>>
>>

>
>



 
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
Dynamically Building Datagrid Columns Craig G ASP .Net 0 02-22-2005 07:39 PM
Column order and dynamically created columns MattB ASP .Net Datagrid Control 1 12-01-2004 11:36 PM
Binding collection to a asp.net DataGrid - order of columns display question David Laub ASP .Net 0 08-03-2004 08:23 PM
Binded Datagrid Formatting columns or hiding columns ton ASP .Net Web Controls 2 02-11-2004 04:09 AM
Columns and Inherited Datagrid...Active Schema does not support columns rob thomson ASP .Net Datagrid Control 0 09-04-2003 03:09 PM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57