2010-09-16 8 views
9

En ASP.net, estoy usando el cuadro de texto en la plantilla del elemento templatefield. Lo tengo vinculado a los datos sin ningún problema. Pero mi problema es que estoy tratando de escribir una función para encontrar el índice de la columna por el nombre de columna de la tabla que delimita los datos.Obtener el nombre obligatorio de la columna del cuadro de texto de la plantilla

Algo como esto:

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

Respuesta

1

esto le ayuda?

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

DataControlField field = fieldCell.ContainingField; 

string strHdrTxt = field.HeaderText.ToString() 

¿Éste?

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

+0

Gracias, Bala. Pero mi texto de cabecera suele ser diferente del nombre de la columna. – Vachara

0

Aquí hay dos opciones rápidas:

Opción 1

poner el nombre de columna en la propiedad de la SortExpression TemplateField. A continuación, puede acceder a esa propiedad para determinar el nombre de la columna.

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

Opción 2 crear un control de cuadro de texto a medida derivada del control de cuadro de texto regular, que incluye una propiedad DataField. Establezca la propiedad DataField en el nombre de columna cuando declare el cuadro de texto. Luego puede recuperarlo utilizando FindControl en la celda para obtener una referencia al cuadro de texto.

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

    return -1; 
} 
Cuestiones relacionadas