2012-02-07 93 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