在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 ??
}
}
答案 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来检索它,以获取对文本框的引用。