int columnIndex=-1; for(int i=0;i<GridView1.Columns.Count;i++) if(GridView1.Columns[i].HeaderText=="字段名") { columnIndex=i; break; } Response.Write("字段名"+"处于第"+columnIndex+"列。");
那需要遍历数据源取得,你的数据源是DataTable就遍历DataTable。
下面方法,只能在Gridview的BoundField进行操作,而在TemplateField模版中去找的话,就无能为力了,因TemplateField模版没有DataField属性。 代码 public int GetColumnIndex(GridView gridView, string fieldName) { int index = -1; for (int i = 0; i < gridView.Columns.Count; i++) { DataControlField dataControlField = gridView.Columns[i]; BoundField boundField = dataControlField as BoundField; if (boundField != null && boundField.DataField == fieldName) index = i; } return index; } 或者可以利用HeaderText与FieldName进行比较,返回列索引: 代码 public int GetColumnIndex(GridView gridview, string fieldName) { int index = -1; foreach (DataControlField dataControlField in gridview.Columns) { if (dataControlField.HeaderText == fieldName) { index = gridview.Columns.IndexOf(dataControlField); } } return index; }
比如说user在GridView中是第几列而不是通过索引得到Text
int columnIndex=-1;
for(int i=0;i<GridView1.Columns.Count;i++)
if(GridView1.Columns[i].HeaderText=="字段名")
{
columnIndex=i;
break;
}
Response.Write("字段名"+"处于第"+columnIndex+"列。");
代码
public int GetColumnIndex(GridView gridView, string fieldName)
{
int index = -1;
for (int i = 0; i < gridView.Columns.Count; i++)
{
DataControlField dataControlField = gridView.Columns[i];
BoundField boundField = dataControlField as BoundField;
if (boundField != null && boundField.DataField == fieldName)
index = i;
}
return index;
}
或者可以利用HeaderText与FieldName进行比较,返回列索引: 代码
public int GetColumnIndex(GridView gridview, string fieldName)
{
int index = -1;
foreach (DataControlField dataControlField in gridview.Columns)
{
if (dataControlField.HeaderText == fieldName)
{
index = gridview.Columns.IndexOf(dataControlField);
}
}
return index;
}