按名称查找GridView列索引的方法在什么是可见的。这是我到目前为止所拥有的:privateintGetColumnIndexByName(GridViewgrid,stringname){foreach(DataColumncolingrid.Columns){if(col.ColumnName.ToLower().Trim()==name.ToLower()。Trim())returncol.Ordinal;}返回-1;在这种情况下,DataColumn似乎不是要使用的正确类型,但我有点不知道我应该在这里做什么。我只能使用.NET2.0/3.5。我不能使用4.0。我发现我需要使用语法略有不同的DataControlField。工作版本:privateintGetColumnIndexByName(GridViewgrid,stringname){foreach(DataControlFieldcolingrid.Columns){if(col.HeaderText.ToLower().Trim()==name.ToLower().Trim()){返回grid.Columns.IndexOf(col);}}返回-1;我更喜欢集合迭代,但在这种情况下为什么要为foreach和grid.Columns.IndexOf调用的开销烦恼呢?只需使用索引遍历数组即可。privateintGetColumnIndexByName(GridViewgrid,stringname){for(inti=0;i更好的解决方案适用于Datafield、SortExpression和headerText。publicstaticintGetBoundFieldIndexByName(thisGridViewgv,stringname){intindex=0;布尔发现=假;foreach(DataControlFieldcingv.Columns){if(cisBoundField){BoundFieldfield=(BoundField)c;if(name==field.DataField||name==field.SortExpression||name==field.HeaderText){found=true;休息;}}索引++;返回找到?指数:-1;}这样,对我有用(.NETGridview):privateintGetColumnIndexByName(GridViewgrid,stringname){for(inti=0;i//GetColumnIndexByName(GridViewRowrow,stringheaderText){intcolumnIndex=0;foreach(DataControlFieldCellcellinrow.Cells){if(cell.ContainingFieldisTemplateField){if(((TemplateField)cell.ContainingField).HeaderText.Equals(headerText)){break;}}if(cell.ContainingFieldisBoundField){if(((BoundField)cell.ContainingField).HeaderText.Equals(headerText)){break;}}columnIndex++;}returncolumnIndex;}如果您需要一个列表而不只是它,你可以使用一些Linq魔术:以上是C#学习教程的全部内容:通过名称查找GridView列的索引的方法。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注---DataControlFieldcol=GridView1.Columns.Cast().First(c=>c.HeaderText=="Column_header")本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
