asp.net:网格视图:排列

时间:2011-06-09 11:09:57

标签: asp.net gridview

我正在使用ASP.NET Grid View来显示表中的数据。 我想按照用户选择的特定顺序排列列。

说明: 我想根据用户的输入交换列(即索引3变为5等),这可能吗?

我已尝试使用此代码..但仍然会产生意外结果

        var boundF0 = (BoundField)GVReport.Columns[0];
        var boundF5 = (BoundField)GVReport.Columns[5];

        GVReport.Columns.RemoveAt(0);
        GVReport.Columns.RemoveAt(5);

        GVReport.Columns.Insert(0, boundF5);
        GVReport.Columns.Insert(5, boundF0); 

知道出了什么问题?

1 个答案:

答案 0 :(得分:0)

您可以将http://www.devexpress.com/用于Gridview,或者下面是传统方法的代码。

DataTable dt = new DataTable();
dt.Columns.Add("Column1", typeof(string));
dt.Columns.Add("Column2", typeof(string));

while (dr.Read())
dt.Rows.Add(new object[] { dr[0], dr[1] });

Grid1.DataSource = dt;
Grid2.DataBind();

This would give you a grid with Column1 and Column2. Once you changed
the order you can do following

If (order_changed)
{
dt.Columns.Add("Column2", typeof(string));
dt.Columns.Add("Column1", typeof(string));
while (dr.Read())
dt.Rows.Add(new object[] { dr[1], dr[0] });
}

else
{

dt.Columns.Add("Column1", typeof(string));
dt.Columns.Add("Column2", typeof(string));
while (dr.Read())
dt.Rows.Add(new object[] { dr[0], dr[1] });
}

Now you would get a grid with Column2 and Column1

将grid的autogeneratecolumns属性设置为true,您将获得列