|
|
|
start date: Wed, 22 Aug 2007 19:48:39 -0700,
posted on: microsoft.public.dotnet.framework.aspnet
back
| Thread Index |
|
1
tshad
|
|
2
Eliyahu Goldin
|
Change order of columns in DataGrid dynamically
I am trying to allow my clients to specify the order that columns show in a
datagrid.
If I have a Datagrid like so:
<asp:DataGrid
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>
</asp:DataGrid>
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
Date:Wed, 22 Aug 2007 19:48:39 -0700
Author:
|
Re: Change order of columns in DataGrid dynamically
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:e4vqDAT5HHA.1212@TK2MSFTNGP05.phx.gbl...
>I am trying to allow my clients to specify the order that columns show in a
>datagrid.
>
> If I have a Datagrid like so:
>
> <asp:DataGrid
> 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>
> </asp:DataGrid>
>
> 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
>
Date:Thu, 23 Aug 2007 10:54:53 +0300
Author:
|
|
|