Advertisements

"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?

> 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).

"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
>>>
>>
>>
>
>

"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
>>>>
>>>
>>>
>>
>>
>
>

"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
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>

"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
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>

Share This Page

Welcome to The Coding Forums!

Welcome to the Coding Forums, the place to chat about anything related to programming and coding languages.

Please join our friendly community by clicking the button below - it only takes a few seconds and is totally free. You'll be able to ask questions about coding or chat with the community and help others.
Sign up now!