2012-02-07 5 views
0

現在、Telerik ASP.Netフレームワークを使用してブロッカーを実行しているWebデータ入力アプリケーション用のテストフレームワークを開発中です。デバッグモードでコードをステップ実行すると、テストでは探しているテキストボックスが見つかり、テストデータを入力してそのデータをデータベースに保存します。私が実行している問題は、テストを自分自身で実行させると、宣言された列がうまくいかないというテストが失敗するということです。ここに私のコードです:Watin:telerikグリッドビューのテキストボックスを反復する

/*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ループは実行されていません。

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を使用することは非常にうまく行っていませんでした。 –

+0

偉大なので、あなたはこの質問に答えてマークすることができます:) – alonp

関連する問題