循环通过具有多个列类型的gridview列

时间:2012-12-12 12:55:21

标签: c# datagridview

首先我会告诉你一些背景知识,我需要创建一个包含动态列的网格,列数将基于用户选择,在我的DataTable中,我将数字添加到列名称以保持其名称不同,然后我绑定它与我的girdview。

现在我需要重命名列headerText并从列标题中删除计数器编号,当我尝试使用以下方法循环grid.columns时,我的网格还有一个非绑定列,其类型为Image;

foreach (DataGridViewTextBoxColumn dgc in grdDistProcessing.Columns)

它给了我错误 InvalidCastException的:

无法将类型为“System.Windows.Forms.DataGridViewImageColumn”的对象强制转换为“System.Windows.Forms.DataGridViewTextBoxColumn”。

我也使用了DataColumn,但它给了我同样的错误,另一个线程说我们应该使用DataControlField但VS没有识别它,它是ASP的东西吗?或者我错过了参考文献?

请帮助。

RGDS,

2 个答案:

答案 0 :(得分:1)

如果您有可用的var关键字(我认为是c#3及以上)。

foreach (var dgc in grdDistProcessing.Columns)
{


 if(dgc is DataGridViewImageColumn)
{

   //do stuff with it.
   var tempDgc = (DataGridViewImageColumn)dgc; //cast it as needed.
   //use it

}


}

答案 1 :(得分:0)

感谢scartag,你的解决方案就像一个魅力,就像我探索问题的另一个解决方案一样,我可以使用简单的for循环。

        `for (int i = 0; i < grdDistProcessing.Columns.Count; i++)
        {
            MessageBox.Show(grdDistProcessing.Columns[i].HeaderText);
        }`