如何更改gridview中列的顺序 [英] How to Change order of columns in 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 yourGridview
has two bound field columns as below
set theAutoGenerateColumns
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屋!