2010-09-16 16 views
9

W środowisku ASP.net używam pola tekstowego w szablonie szablonu szablonu. Zrobiłem to bez żadnych problemów. Ale mój problem polega na tym, próbuję napisać funkcję, aby znaleźć indeks kolumny za pomocą nazwy kolumny tabeli ograniczającej dane.Uzyskaj wiążącą nazwę kolumny szablonu texbox szablonu

coś takiego:

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

Odpowiedz

1

będzie to pomaga?

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

DataControlField field = fieldCell.ContainingField; 

string strHdrTxt = field.HeaderText.ToString() 

Ten?

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

+0

Dziękuję, Bala. Ale mój nagłówek jest zwykle inny niż nazwa kolumny. – Vachara

0

Oto dwa szybkie opcje:

Opcja 1

umieścić nazwę kolumny w obiekcie SortExpression z TemplateField. Następnie uzyskasz dostęp do tej właściwości, aby określić nazwę kolumny.

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

Opcja 2 Tworzenie niestandardowego formantu pola tekstowego pochodzący z regularnej kontroli tekstowego, który zawiera właściwość DataField. Ustaw właściwość DataField na nazwę kolumny, gdy zadeklarujesz pole tekstowe. Możesz później odzyskać go za pomocą FindControl na komórce, aby uzyskać odniesienie do pola tekstowego.

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

    return -1; 
} 
Powiązane problemy