获取templatefield文本框的绑定列名称

时间:2010-09-16 04:21:00

标签: c# asp.net

在ASP.net中,我在templatefield的itemtemplate中使用了文本框。我得到数据绑定没有问题。 但我的问题是,我正在尝试编写一个函数来通过数据绑定表的列名来查找列索引。

这样的事情:

foreach (DataControlFieldCell cell in row.Cells)
{               
  if (cell.ContainingField is BoundField)
  {
    if (((BoundField)cell.ContainingField).DataField.Equals(SearchColumnName))
    {
      return columnIndex;
    }
  }
  else if (cell.ContainingField is TemplateField)
  {
    //Finding column name of data-bound textbox or dropdownlist ??
  }
}

3 个答案:

答案 0 :(得分:1)

这会对你有帮助吗?

DataControlFieldCell fieldCell = HeaderRow.Cells[i] as DataControlFieldCell;

DataControlField field = fieldCell.ContainingField;

string strHdrTxt = field.HeaderText.ToString()

这一个?

string colName = ds.Columns [0] .ColumnName;

答案 1 :(得分:1)

int GetColumIndex(string name)
{
    foreach (DataControlField field in _GridView.Columns)
    {
        if (field.SortExpression == name)
        {
            return _GridView.Columns.IndexOf(field);
        }
    }

    return -1;
}  

答案 2 :(得分:0)

以下是两个快速选项:

选项1

将列名放在TemplateField的SortExpression属性中。然后,您可以访问该属性以确定列名称。

if (((TemplateField)cell.ContainingField).SortExpression.Equals(SearchColumnName))
{ 
    return columnIndex; 
}

选项2 创建从常规文本框控件派生的自定义文本框控件,该控件包含DataField属性。声明文本框时,将DataField属性设置为列名。您可以稍后通过在单元格上使用FindControl来检索它,以获取对文本框的引用。