2012-02-07 92 views
0

我目前正在爲使用Telerik ASP.Net框架並已運行到阻止程序的Web數據錄入應用程序開發測試框架。如果我在調試模式下遍歷我的代碼,測試將找到我正在查找的文本框並輸入一些測試數據,然後將該數據保存到數據庫。我遇到的問題是,當我讓測試自行運行時,測試失敗,說它無法處理已聲明的列。這裏是我的代碼:Watin:在telerik gridview中遍歷文本框

/*Method to enter test data into cell*/ 
private TableCell EditFieldCell(string columnHeader) 
{ 
var columnIndex = ColumnIndex(columnHeader); 

if (columnIndex == -1) 
    throw new InvalidOperationException(String.Format("Column {0} not found.", columnHeader)); 

return NewRecordRow.TableCells[columnIndex]; 
} 

/*Method to return column index of column searching for*/ 
public int ColumnIndex(string columnHeader) 
{ 
var rgTable = GridTable; 
var rgCount = 0; 
var rgIndex = -1; 

foreach (var rgRow in rgTable.TableRows) 
{ 
     foreach (var rgElement in rgRow.Elements) 
     { 
     if (rgElement.Text != null) 
     { 
     if (rgElement.Text.Equals(columnHeader)) 
     { 
      rgIndex = rgCount; 
      break; 
     } 
     } 
     rgCount++; 
    } 
return rgIndex; 
} 

我的想法是,用的東西,因爲當我讓時返回的rgIndex值運行的程序是-1,告訴我,在代碼嵌套我的for循環中呈現的問題for循環未運行。

是可以獲得表列索引TIA, 比爾·揚曼

回答

0

代碼。您需要將表(驗證該表存在,而調試):

public int GetColumnIndex(Table table, string headerName) 
    { 
     ElementCollection headerElements = table.TableRows[0].Elements; //First row contains the header 
     int counter = 0; 
     foreach (var header in headerElements) 
     { 
      if (header.ClassName != null && header.ClassName.Contains(headerName)) //In this case i use class name of the header you can use the text 
      { 
       return counter; 
      } 
      counter++; 
     } 
     // If not found 
     return -1; 
    } 
+0

感謝 - 這奏效了,雖然我也有稍作修改,並期待在header.Text而不是header.Class因爲編寫此應用程序的供應商在使用控件ID或類ID方面做得並不好。 – 2012-02-10 16:57:48

+0

太棒了,所以你可以把這個問題標記爲回答:) – alonp 2012-02-14 07:56:24