DotNetNewsgroup.com  
web access to complete list of Microsoft.NET newsgroups
   home   |   control panel login   |   archive  |  
 
  carried group
academic
adonet
aspnet
aspnet.announcements
aspnet.buildingcontrols
aspnet.caching
aspnet.datagridcontrol
aspnet.mobile
aspnet.security
aspnet.webcontrols
aspnet.webservices
assignment_manager
datatools
dotnet.distributed_apps
dotnet.general
dotnet.myservices
dotnet.nternationalization
dotnet.scripting
dotnet.security
dotnet.vjsharp
dotnet.vsa
dotnet.xml
dotnetfaqs
framework
framework.clr
framework.compactframework
framework.component_services
framework.controls
framework.databinding
framework.drawing
framework.enhancements
framework.interop
framework.odbcnet
framework.performance
framework.remoting
framework.sdk
framework.setup
framework.webservices
framework.windowsforms
framework.wmi
frwk.windowsforms.designtime
lang.csharp
lang.jscript
lang.vb
lang.vb.controls
lang.vb.data
lang.vb.upgrade
lang.vc
lang.vc.libraries
  
 
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:  

Google
 
Web dotnetnewsgroup.com


COPYRIGHT ?2005, EUROFRONT WORLDWIDE LTD., ALL RIGHT RESERVE  |   Contact us