2010-09-16 2 views
9

В ASP.net я использую текстовое поле в шаблоне itemplate шаблона. Я получил данные без каких-либо проблем. Но моя проблема в том, что я пытаюсь написать функцию, чтобы найти индекс столбца по имени столбца таблицы, связанной с данными.Получить имя столбца столбца texbox templatefield's

Что-то вроде этого:

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 ?? 
    } 
} 

ответ

1

будет это поможет вам?

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

DataControlField field = fieldCell.ContainingField; 

string strHdrTxt = field.HeaderText.ToString() 

Этот?

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

+0

Спасибо, Бала. Но мой заголовок обычно отличается от имени столбца. – Vachara

0

Вот два быстрых варианта:

Вариант 1

Помещенный имя столбца в свойстве SortExpression в TemplateField. Затем вы можете получить доступ к этому свойству, чтобы определить имя столбца.

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

Вариант 2 Создать пользовательский элемент управления текстового поля, полученное из обычного управления текстового поля, которое включает в себя DataField собственности. Задайте для свойства DataField имя столбца при объявлении текстового поля. Вы можете позже получить его, используя FindControl в ячейке, чтобы получить ссылку на текстовое поле.

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

    return -1; 
} 
Смежные вопросы