2010-09-16 23 views
9

In ASP.net, sto usando la casella di testo nell'elemento item di template. Ho ottenuto il data-bound senza problemi. Ma il mio problema è che sto provando a scrivere una funzione per trovare l'indice di colonna dal suo nome di colonna della tabella di delimitazione dei dati.Ottieni il nome della colonna vincolante della texbox di templatefield

Qualcosa di simile a questo:

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

risposta

1

sarà questo ti aiuta?

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

DataControlField field = fieldCell.ContainingField; 

string strHdrTxt = field.HeaderText.ToString() 

Questo?

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

+0

Grazie, Bala. Ma il mio header text di solito è diverso dal nome della colonna. – Vachara

0

Qui ci sono due opzioni rapide:

Opzione 1

Mettere il nome della colonna nella proprietà SortExpression del TemplateField. È quindi possibile accedere a tale proprietà per determinare il nome della colonna.

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

Opzione 2 creare un controllo textbox personalizzato derivato dal controllo TextBox regolare, che include una proprietà DataField. Impostare la proprietà DataField sul nome della colonna quando si dichiara la casella di testo. È possibile recuperarlo in seguito utilizzando FindControl sulla cella per ottenere un riferimento alla casella di testo.

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

    return -1; 
} 
Problemi correlati