2012-01-16 6 views
3

私はDataGrid(現在は.NET 3.5 WPFToolkitバージョンですが、必要に応じて.NET 4.0のすぐ使えるDataGridを使用できます)をオブジェクトのコレクションにバインドしています。データグリッド内の3つの列は、データベースから他の情報を取得するためのキーとして使用される情報の一部を表します。この他の情報は、データグリッドの他の列に入力する計算に使用されます。DataGridに不完全な行が追加されないようにするにはどうすればよいですか?

ユーザーがこれらの3つのフィールドを入力し、これらのフィールドのデータの組み合わせがデータベースに存在する場合、その行はコレクションに追加するために有効と見なされます。また、ユーザーは行の他の列を自由に編集することもできます。他の列にユーザーがデータを入力すると、3つの「キー」フィールドは「ロックされている」とみなされます。その情報を変更する唯一の方法は、行全体を削除して新しい行を追加することです。

1)これを処理するUXの観点からの最良の方法は何ですか?ユーザーが任意の列にデータを入力し、そのエントリを「キャッシュ」し、「キー」データが入力された後に一度に計算を実行できるようにする必要がありますか?または、ユーザーが「キー」データを最初に入力するように制限し、ユーザーが他の列にデータを入力できるようにする必要がありますか?

2)上記をデータグリッドに実装するための戦略(イベントハンドラなどが必要です)は何ですか?有効な「キー」データを持つまで、新しい行をデータバインドされたコレクションに追加できないようにするか、新しい行を検証エラーで追加できるようにして、ユーザーが続行することをどうにかして追跡します部分的に完了した行の「キー」列を編集しますが、データグリッドの他の既存の行は編集しませんか?これは私が私の特定の状況のた​​めにやったことある

+0

@jberger - これまでは、3つの「キー」フィールドで有効なデータが記述されるまで(つまり、「キー」フィールドが指定されたデータベースから余分なデータを見つけることができる)これらのフィールドが有効になるまで、その行に編集モードを残しません。これにより、ユーザーは新しい行の非「キー」フィールドに記入するのを止めることはできません。また、ユーザーが「キー」フィールドに何かを入力する前に、新しい行がコレクションに追加されます(コレクションにバインドされたデータグリッドの既定の動作)。私はいくつかの約束を示すここから行くべきどんなタイプの方向についても喪失しているだけです。 –

+0

[UX](http://ux.stackexchange.com/)のUX部分に問い合わせることをお勧めします。 UXの回答が得られれば、ソリューションの次の部分を開始することができます。 –

+0

http://ux.stackexchange.com/q/16178/8978 –

答えて

0

1)これを処理するための最良の方法は、ユーザーに可能な限り最も柔軟性を提供することです。これは、特定の条件の下でユーザーがキーデータを編集できるようにすることを意味しますが、キーデータの入力をユーザーに制限することはできません。

2)これを実装するための戦略には2つの部分があります。まず、キーデータを編集することができないときを定義し、トリガに基づいてキー値列を読み取り専用モードに切り替えるスタイルをデータグリッド列に追加します。第2に、キーデータが変更された場合、古いキーデータを使用して行が削除されたかのように、シーンの背後にあるすべてのロジックを実行し、新しいキーデータを使用して作成します。これは私が起こる必要があるすべての副作用をカバーします。

関連する問題