改变gridview中边界的顺序

时间:2011-10-10 12:59:35

标签: c# asp.net gridview

我正在尝试开发一个应用程序,Gridview中显示的数据。 gridview包含许多boundfield列。我最近在gridview的最后一个boundfield列(Imported boundfield column)结束后添加了一列。所以我没有机会将最后一个边界移动到标记中的所需位置。如果我将列移动到所需的位置,那么我将在行_databounding时修改整个编码。那么有什么方法可以重新订购列而不改变标记? ..

<asp:BoundField DataField="someData" HeaderText="SomeData"> </asp:BoundField>
 <asp:CommandField UpdateText="Update" EditText="Edit" CancelText="|Cancel" ShowEditButton="true" ControlStyle-CssClass="LinkNormal" />
 <asp:BoundField DataField="someData2" HeaderText="Imported"> </asp:BoundField> 

out put将是这样的(编辑/删除/导入是boundfield列)

  

SomeData |更新|进口

我现在需要什么gridview shoud显示像这样

  

导入| SomeData |更新

2 个答案:

答案 0 :(得分:0)

看起来,GridView没有这样的功能。而不是,您可以尝试通过例如列的标题文本获取代码后面的列的索引,下面是执行该作业的函数:

int getColumnIndexByHeaderText(GridView gridView, string headerText)
{
    for (int i = 0; i < gridView.Columns.Count; ++i)
    {
        if (gridView.Columns[i].HeaderText == headerText)
            return i;
    }
    return -1;
}

并使用它代替硬编码列索引。

答案 1 :(得分:0)

我建议不要使用列索引,并开始使用数据键来引用代码隐藏中的列值。这样,您可以更改标记并移动列,而不会影响代码隐藏。

<asp:GridView ID="GridView1" runat="server" DataKeyNames="Col1, Col2, Col3" ... >

使用数据键,您可以在RowDataBound事件中获取如下列值:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    string col1 = GridView1.DataKeys[e.Row.RowIndex]["Col1"].ToString();
}