我正在尝试开发一个应用程序,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 |更新
答案 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();
}