2016-03-29 11 views
-1

データベースからデータテーブルを作成しました。このデータテーブルに列名「TabOrder」があります 今、私はこのデータテーブルをループし、ループの現在の繰り返しよりも次の最大タブオーダーを取得します。例えば、ループの現在の反復(i)が5の場合、taborderカラムの次の最大値を求めます。次の最大値は6,7,10などになります。データテーブルから次の最大数を取得する方法

for (int j = 0; j < dtFormFields.Rows.Count; j++) 
          { 
           if (dtFormFields.Rows[j]["taborder"].ToString() == (tabOrder + 1).ToString()) 
           { 
            foreach (var control in objForm.Controls) 
            { 
             if (control is GroupControl) 
             { 
              var objGroupControl = control as GroupControl; 
              foreach (var ctrl in objGroupControl.Controls) 
              { 
               if (ctrl is TextEdit) 
               { 
                var objTextBox = ctrl as TextEdit; 
                if (objTextBox.Name == dtFormFields.Rows[j]["textboxname"].ToString()) 
                { 
                 ReturnControl = objTextBox; 
                 objTextBox.TabIndex = tabOrder; 
                 break; 
                } 
               } 
} 
} 
} 
} 
} 

私は、現在のコントロールの次の最大タブオーダーを設定します。これを達成する方法。

+1

あなたは何をしようとしているのか、これまで達成していることをもっと詳しく説明する必要があります。いくつかのコードとあなたが読んだマニュアルセクションと、なぜ彼らがあなたを助けなかったのかを投稿してください。 –

+0

私は自分の質問を編集しました。貼り付けられたコード –

答えて

0

を持つ行がかかります。 TabOrder列には値が含まれていますが、反復処理中に列が現在の反復処理で保持している値よりも高い可能性があります。 1.これは、データベースからDataTableを埋め込む際に実現できます。そのため、クエリでTabOrderのデータをソートすると、次の値が取得されます。 (ただし、数値5が複数回あると失敗する可能性があります。) 2.ループ内で単純な関数を呼び出し、現在のTabOrder値を送信し、DataTable列の値をループして次の最大値を取得します。

この情報が役立つかどうかを教えてください。

+0

私はもう一度ループしたくありません。 –

+0

あなたの最初の提案が役に立ちます。私の問題を解決しました。ありがとう:) –

0

dtTableをデータベースから取り込み、TabOrderという名前の列を持つdataTableとします。次のコードは、あなたがTabOrderのためにこれらの行を注文するのに役立つと私は理解している何番目に高い行の順序

var secondMaxRow = dtTable.AsEnumerable().OrderBy(x => x["TabOrder"]).Skip(1).FirstOrDefault(); 
関連する問題