2010-09-16 24 views
9

Trong ASP.net, tôi đang sử dụng hộp văn bản trong itemtemplate của templatefield. Tôi nhận được dữ liệu bị ràng buộc mà không có vấn đề gì. Nhưng vấn đề của tôi là, tôi đang cố gắng viết một hàm để tìm chỉ mục cột bằng tên cột của bảng giới hạn dữ liệu của nó.Nhận tên cột liên kết của texbox templatefield

Something như thế này:

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

Trả lời

1

này sẽ giúp bạn?

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

DataControlField field = fieldCell.ContainingField; 

string strHdrTxt = field.HeaderText.ToString() 

Cái này?

chuỗi colName = ds.Columns [0] .ColumnName;

+0

Cảm ơn bạn, Bala. Nhưng ngữ cảnh của tôi thường khác với tên cột. – Vachara

0

Dưới đây là hai lựa chọn nhanh chóng:

Lựa chọn 1

Đặt tên cột trong tài sản của TemplateField SortExpression. Sau đó, bạn có thể truy cập thuộc tính đó để xác định tên cột.

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

Lựa chọn 2 Tạo một điều khiển tùy chỉnh hộp có nguồn gốc từ sự kiểm soát hộp thường xuyên, trong đó bao gồm một tài sản DataField. Đặt thuộc tính DataField thành tên cột khi bạn khai báo hộp văn bản. Sau đó bạn có thể truy xuất nó bằng cách sử dụng FindControl trên ô để lấy tham chiếu đến hộp văn bản.

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

    return -1; 
} 
Các vấn đề liên quan