1

bindingnavigator によってナビゲートされるデータセットに保持されている 2 つのテーブルからの 22 のデータ バインド コントロールを持つ vb.net 2010 フォームがあります。これにより、削除と更新が正常に追加されます。ただし、新しいレコードを追加するときに必要なのは、いくつかのフィールドに事前に入力する必要があることです。より具体的には、任意の値にすることができるポイント残高フィールドなどがありますが、通常は新しい顧客では 0 になるため、新しいレコードを追加するときにそれらを 0 に初期化したいと考えています。

データソースでイベントをAddingNew見つけましたが、これは新しいアイテムが追加される前に呼び出されたため、すべての初期化が失われました。

これに関する助けをいただければ幸いです。よろしくフェルドー

4

3 に答える 3

1

DefaultValueDataTables を使用しているため、DataColumnのプロパティを手動で設定できます。

Dim dt As New DataTable
Dim dc As New DataColumn("test", GetType(String))
dc.DefaultValue = "hello"
dt.Columns.Add(dc)
dt.Rows.Add()
Debug.WriteLine(dt.Rows(0)("test").ToString)

結果:こんにちは

于 2012-06-18T12:52:19.650 に答える
1

複数のリンクされたテーブル ソリューションを含む回答:

LarsTechが言ったように

dataset.table.Columns.Item("someField").DefaultValue = someValue

標準のデフォルトがある場合はうまく機能しますが、新しい追加が行われた場合に保存時にこのデフォルトを次の値にリセットすると、生成されたデフォルトでも機能します。ただし、子テーブル レコードを適切に生成できないデータ ソースとしてデータセットを使用している場合 (私の場合のように、データベース トリガーを使用して保存時にのみアカウント ID が生成され、すべての異なる種類のアカウントがリンクされます)、引き続き使用できます。兄弟(または存在しない親)テーブルの他のフィールドのデフォルトを設定しますが、

dataset.siblingTable.Columns.Item("someField").DefaultValue = someValue

バインディング ナビゲータは最初の兄弟のみを生成し、親はトリガーまで生成されないため、機能しません。ただし、BindingSource.PositionChanged[追加] をクリックして生成されたバインディング ソースのイベントでは、デフォルトを画面上の実際のコントロールに自由に配置でき、null によって上書きされることはありません。ユーザーが [追加] を押した場合にのみ発生するように、明らかにこれを制限する必要があります。追加ボタンのイベントに変数を追加して、Clickedいつ追加がクリックされたかを知らせ、保存またはロールバック時にこの変数をリセットします。if null または空のデフォルト値を持つバインディング自体を変更することもできます。

これが他の誰かに役立つことを願っています:)

于 2012-07-02T13:53:10.103 に答える