2009-03-03 9 views
0

ここで大きな頭脳が必要なのは、要件よりも難しいことです。私はちょっと困惑しています。私は通常、正しい方向にプロダクトが必要なので、あなたの凝った棒を準備してください。2ダースの値をチェックする、データ列に対するテキストボックス、アルゴリズム的に

私はタブコントロールをテキストボックスでカバーしています。同じフォーム上のリストビューでSelectedIndexChangedイベント中にすべてのテキストボックスの内容をチェックしたいと思います。テキストボックスの1つにDataTable行とは異なるデータがある場合(ListView項目で表される)、ユーザーが直前に行った変更を保持したいかどうかを尋ねる必要があります。何も変わっていなければ、選択を変更するだけです。

明らかに、私はテキストボックスの内容をデータローの関連する列と比較しています。

私はちょうどブルートを強制的にチェックし、個々のチェックを1つずつ実行できます。私は、タブコントロールのテキストボックスを循環させ、列の値に対して値をチェックする、賢明なアルゴリズム的な方法を考案したいと考えています。

提案がありますか?

EDIT:私は「賢明に名前のついたテキストボックス」ソリューションが最高ののが好きですが、どちらも良いですが。次の14日間で誰も良いアイデアがなければ、テキストボックスの回答は緑色になります。

答えて

0

名前の一部が列/行の名前であるため、テキストボックスに巧妙な名前を付けます。

グループテキストボックスは、ループを制御します。各コントロールに対して、(部分)名を取得し、それをデータテーブルへの参照として使用します。値を確認してください。

0

あなたが正しく理解している場合は、変更されたテキストボックスをチェックするだけで、すべてのテキストボックスを比較しないようにしたいと思っています。これは、ListViewコントロールのSelectedIndexChangedイベントです。そうですか?

DataRowsとDataTablesにはすでに行のバージョン管理とロールバックが実装されているため、テキストボックスを元の行にバインドする場合は、変更を書き込むイベントを書き込むか、フォーカスを失うか、自動メカニズムを使用して同じタスク)、SelectedIndexChangedのRowStateプロパティを確認します。 RowStateが変更されていない場合は、ユーザーに保存を促します。彼がセーブしたら、変更をコミットし、そうでなければそれらを拒否します。

したがって、たとえば、あなたはあなたのSelectedIndexChangedイベントハンドラでこのような何かをしたいと思います:

if (row.RowState == DataRowState.Modified) { 
    // prompt for user input 
    if (promptResult == PromptResult.Save) { 
    row.AcceptChanges(); 
    } 
    else { 
    row.RejectChanges(); 
    } 
} 
関連する問題