有没有办法检查GridViewRow是否有TemplateFields或BoundFields?

时间:2013-07-29 19:04:44

标签: c# asp.net gridview

我正在使用一些代码来检查GridViewRow单元格中的控件。我想要一些代码(myRow.Cells [0] .Controls是BoundField == true)。显然这段代码不起作用,我没有在Cells的属性中看到任何东西,允许我这样做。是否有一些强制转换或模糊属性允许我检查控件(或其容器)是否为TemplateField或Boundfield?

2 个答案:

答案 0 :(得分:3)

您可以查看手机的ContainingField

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        foreach (DataControlFieldCell cell in e.Row.Cells)
        {
            if (cell.ContainingField is CommandField)
            {

            }
            else if (cell.ContainingField is BoundField)
            {

            }
            else if (cell.ContainingField is TemplateField)
            {

            }
        }
    }
}

答案 1 :(得分:1)

既然您知道了单元格的索引(在您的示例中为0),您可以找到该单元格所属的列(通过相同的索引)并检查该列的类型:

if (myGrid.Columns[0] is BoundField) {

}