如何更改gridview中列的顺序 [英] How to Change order of columns in gridview

查看:581
本文介绍了如何更改gridview中列的顺序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用gridView。我有一些自动生成的列,有些是由我生成的。现在首先显示我生成的列,然后显示自动生成的列。我想首先显示自动生成的列然后显示我生成的列。



IMP注1: - 我不能使用它(例如): -



< asp:BoundField HeaderText =  我的第一列 DataField =   myField1 /> 



注2:列数和列名是动态的

解决方案

试试这个



 datagridview.Columns [ColumnName]。DisplayIndex = 1; //将索引替换为您希望显示列的索引。


动态更改gridview模板列顺序。

1.遍历GridView对象的所有颜色并将它们存储在集合中。

列表<   DataControlField  >  coloumns = new List <   DataControlField  < span class =code-keyword>> (); 
foreach(gv.Columns中的DataControlField coloumn)
{
coloumns.Add(coloumn);
}



2.在集合中重新排列coloumn-objects。

//重新排列coloumns'集合..



3.清除GridView对象的所有颜色,并将集合中的coloumns添加到GridView对象。

 gv.Columns.Clear(); 
foreach (DataControlField coloumn in coloumns)
{
gv。 Columns.Add(coloumn);
}


HI试试这样..



考虑你的 Gridview 具有两个绑定字段列,如下所示

AutoGenerateColumns 设置为 false



 <   asp:GridView     ID   =  GridView1    AutoGenerateColumns   =  false    runat   =  server >  
< < span class =code-k eyword>>
< asp:BoundField HeaderText = ____ Static_Col_AA DataField = AutoColum_AA ItemStyle-Width < span class =code-keyword> = 50px / >
< asp:BoundField HeaderText = ____ Stat ic_Col_BB DataField = AutoColum_BB ItemStyle-Width = 50px / >
< / Columns >
< / asp:GridView >





假设这个示例数据源



 DataTable dt =  new  DataTable(); 
dt.Columns.Add( AutoColum_AA typeof int ));
dt.Columns.Add( AutoColum_BB typeof int ));
dt.Columns.Add( AutoColum_CC typeof int ));
dt.Columns.Add( AutoColum_DD typeof int ));

for int i = 0 ; i < 6 ; i ++)
dt.Rows。添加(i,i,i,i);







将gridview的所有静态列存储到列表中



 List< DataControlField> lstStaticColumns =  new  List< DataControlField>(); 
foreach (DataControlField col in GridView1.Columns)
lstStaticColumns.Add(col );





清除GridView列

 GridView1.Columns.Clear(); 





在代码隐藏中创建动态列为

(这将是自动生成的列它将首先出现在网格视图中)

  foreach (DataColumn col  in  dt.Columns)
{
BoundField bfield = new BoundField();
bfield.DataField = col.ColumnName;
bfield.HeaderText = col.ColumnName;
GridView1.Columns.Add(bfield);
}





将静态列添加到GridView(绑定(静态)列将出现在最后)



  foreach (DataControlField col  in  lstStaticColumns)
GridView1.Columns.Add(col);





将GridView绑定如下.. 。:)



 GridView1.DataSource = dt; 
GridView1.DataBind();





注意:经过测试的工作正常..


I am using gridView. I have some auto generated columns and some generated by me. Now the column which I have generated is displayed first and then the auto generated columns. I want to display auto generated columns first and then my generated columns.

IMP Note 1 :- I can't use this (for example): -

<asp:BoundField HeaderText="My First Column" DataField="myField1" />


Note 2 : No. of columns and name of columns are dynamic

解决方案

Try This

datagridview.Columns["ColumnName"].DisplayIndex = 1;//Replace 1 with your index where you want the column to be displayed.


change gridview templatecolumn order dynamically.
1.Iterate through all coloumns of the GridView object and Store them in a collection.

List<DataControlField> coloumns = new List<DataControlField>();
foreach (DataControlField coloumn in gv.Columns)
{
    coloumns.Add(coloumn);
}


2.Rearrange the coloumn-objects as you want in the collection.
//Rearrange coloumns' collection..

3.Clear all coloumns of the GridView object and add coloumns from the collection to GridView object.

gv.Columns.Clear();
 foreach (DataControlField coloumn in coloumns)
 {
     gv.Columns.Add(coloumn);
 }


HI Try like this..

Consider your Gridview has two bound field columns as below
set the AutoGenerateColumns as false

<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server">
       <Columns>
           <asp:BoundField HeaderText="____Static_Col_AA" DataField="AutoColum_AA" ItemStyle-Width="50px" />
           <asp:BoundField HeaderText="____Static_Col_BB" DataField="AutoColum_BB" ItemStyle-Width="50px" />
       </Columns>
   </asp:GridView>



assume this sample datasource:

DataTable dt = new DataTable();
               dt.Columns.Add("AutoColum_AA", typeof(int));
               dt.Columns.Add("AutoColum_BB", typeof(int));
               dt.Columns.Add("AutoColum_CC", typeof(int));
               dt.Columns.Add("AutoColum_DD", typeof(int));

               for (int i = 0; i < 6; i++)
                   dt.Rows.Add(i, i, i, i);




Store all the static columns of the gridview to a list as

List<DataControlField> lstStaticColumns = new List<DataControlField>();
               foreach (DataControlField col in GridView1.Columns)
                   lstStaticColumns.Add(col);



Clear the GridView Columns:

GridView1.Columns.Clear();



Create the Dynamic Columns in the codebehind as
( this will be auto generated columns which will be appearing first in the gird view )

foreach (DataColumn col in dt.Columns)
                {
                    BoundField bfield = new BoundField();
                    bfield.DataField = col.ColumnName;
                    bfield.HeaderText = col.ColumnName;
                    GridView1.Columns.Add(bfield);
                }



Add the Static Columns to the GridView ( bound (static) columns will be appearing at the end )

foreach (DataControlField col in lstStaticColumns)
                   GridView1.Columns.Add(col);



Bind the GridView as below... :)

GridView1.DataSource = dt;
               GridView1.DataBind();



Note: Tested Working Fine..


这篇关于如何更改gridview中列的顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆