- - PR -
DataGridでの更新はできなく、追加だけしたい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-02-22 10:32
いつもお世話になります。
VB.NETで開発しています。 DataGridで既に登録されている内容は変更出来ないようにして 新規での追加のみを行えるようにしたいですが Dim cm As CurrencyManager = CType(Me.BindingContext(grdObj.DataSource), CurrencyManager) Dim dv As DataView = CType(cm.List, DataView) dv.AllowNew = True dv.AllowEdit = False dv.AllowDelete = False とすると新規追加行の編集も出来なくなってしまいます。 なにかいい方法はないでしょうか? | ||||
|
投稿日時: 2006-03-02 23:35
もう解決済みかも知れませんが、1例です。
DataGridTableStyleを使用したプログラムでcell単位に変更禁止の制御をしたかったので 下記のようなプログラムを作成した事があります。 CurrentCellChangedイベントが発生した時にそのcellが入力可能かどうか検査し、 入力不可の時にはDataGridColumnStyleのReadOnlyプロパティをTrueにする。 入力可能な時にはFalseにするというものです。 (Windows.Forms.DataGridTextBoxColumn等) 注意しなければならないのは、DataGridにユーザー作成のComboBox等を 使用している時ですが、ReadOnlyプロパティを考慮したサンプルは少ない様に思われます。 ですが、標準のColumnStyleだけでしたら上記の方法で一応動作すると思います。 後は、新規追加中であるか否かをどう判定するかという事ですね。 例えば2行追加するとして1行目を入力後2行目を入力開始した時に 1行目を入力禁止とするのでしょうか? それとも1行目の1項目目を入力し2項目目にカーソル移動した時に 1項目目を変更禁止とするのでしょうか? 実際問題として、この様な仕様を組み込む目的(必要性)が分からないのですが、 何故登録のみ可能したいのかという事の「目的」が明確になれば もう少し良い案が出てくるのではないでしょうか? | ||||
|
投稿日時: 2006-03-03 09:46
ちなみに、上記の方法は新規登録不可のDataGridだったので簡単でしたが、 新規登録可能な場合は色々と面倒だと思いますので、 私ならば下記の案で代用する事を検討します。 DataGridを2つ作成し、片方は既存のデータを変更不可で表示します。 もう片方は新規登録と変更可能なもので、空のものを表示します。 新規登録後、確定されたデータを変更不可のDataGridに移動します。 そうすればあまり細かな作り込みは必要ないと思いますので。 DataViewをうまく使用すれば、1つのDataTableで対応できるでしょう。 |
1