datagridview 列索引
Posted
技术标签:
【中文标题】datagridview 列索引【英文标题】:datagridview column index 【发布时间】:2011-09-30 21:01:08 【问题描述】:我有一个带有DataGridView
小部件的表单,我需要获取具有所选名称的列的索引。
例如,假设我有一个包含 2 列的表:姓名、姓氏。我需要一种方法来获取列名的索引。问题是它一直根据DataSource
而变化,但该列始终具有相同的名称“名称”。
有谁知道如何解决这个问题?
【问题讨论】:
【参考方案1】:我发现使用列对象的 Name 属性比使用列名作为字符串更安全,因为这样可以在将来进行更一致的代码重构。
datagridview1.Columns[column1.Name].Index;
此外,重要的是首先确保该列不为空,并且正如其他人所说,它包含在 datagridview 中。
【讨论】:
【参考方案2】:在代码下面创建一个静态类
public static class MyTools
public static int IndexByName(this DataGridView dgv, string name)
foreach(DataGridViewColumn col in dgv.Columns)
if(col.HeaderText.ToUpper().Trim() == name.ToUpper().Trim())
return col.Index;
return -1;
然后用你的 dataGridView 调用它
int index = datagridview1.IndexByName("columnName");
【讨论】:
【参考方案3】:可以通过the Index property of the DataGridViewColumn widget获取索引,如下:
ColumnName.Index
这避免了在运行时检查列名是否有效的需要,因为如果列不存在则会产生编译错误。这也使重构更容易。
我建议您给列起一个合理的名称(例如DCOL_SomeName
),以便您可以轻松区分它们。如果您在同一个表单上有多个 DataGridView
小部件,包括 DataGridView
小部件的名称会有所帮助。
【讨论】:
【参考方案4】:要按名称检索DataGridView
列,您只需通过列集合索引器引用它:
datagridview1.Columns["columnName"]
然后就可以从该列获取列索引:
datagridview1.Columns["columnName"].Index;
请注意,如果您使用无效的列名,则此引用将返回 null,因此您可能需要在使用之前检查列引用不为 null,或者先使用列集合 .Contains()
方法。
【讨论】:
为了安全起见(对于其他用户),您应该首先检查该列是否存在:datagridview1.Columns.Contains("ColumnName") @ginalster 谢谢 - 好点,我已将其添加到答案中。【参考方案5】:如果我是对的,e.ColumnIndex
也可以解决这个问题。你可以查看 MSDN 文档 here
【讨论】:
以上是关于datagridview 列索引的主要内容,如果未能解决你的问题,请参考以下文章
c# winform编程 数据库 .net 怎么获取datagridview中选中列的列索引?
pandas使用read_csv函数读取csv数据header参数指定作为列索引的行索引列表形成复合(多层)列索引使用方括号[]基于最外层列索引名称索引列数据
winform中获取datagridview如何获取选中的行,返回值object
pandas读取csv数据header参数指定作为列索引的行索引列表形成复合(多层)列索引使用set_index函数把数据列转化为行索引(keys参数指定需要被转化的层列索引)
pandas读取csv数据header参数指定作为列索引的行索引列表形成复合(多层)列索引使用set_index函数把数据列转化为行索引(keys参数指定需要被转化的层列索引)