- 題名: データグリッドビューの空白行(新規行)について
- 日時: 2010/07/16 15:36:25
- ID: 27095
- この記事の返信元:
- (なし)
- この記事への返信:
- [27100] Re[1]: データグリッドビューの空白行(新規行)について2010/07/20 9:56:28
- [27101] Re[1]: データグリッドビューの空白行(新規行)について2010/07/20 11:30:23
- ツリーを表示
■No27095に返信(頭我悪蔵さんの記事) > 値1から値4はfloat型 メモはnvercharです。 それらは、「データベースの型」ですよね。 DataGridView に表示する場合には、DataTable 等を介して使うことが多いですが、 どの方法を使うにしても、表示前には「.NET の型」に変換されているはずです。 それはどのような型ですか? たとえば、Double、Double?、Decimal、Decimal?、Integer、Integer?、String など。 > A 11.1 11.1 2 空白 頭我天才と順番に打ち込みエンターをを押しても行が削除されます。 値3が全角の「2」になっているのが妙ですね。 データ変換やデータ検証のために、何か追加のコードを記述しているのでしょうか? > すいません 課題の関係上これ以上書き込めないんですm−−m と言われましても、作成手順も無ければ現象を再現可能な最低限のコードもありませんから、 これだけの情報で状況が伝わる事は稀でしょう。もう少し具体的な情報が必要だと思いますよ。 たとえば「バインドしたデータグリッドビュー」と一口に言っても、 BindingSource を使っているとか、DataTable を直接割り当てたとか、 いろいろな使い方がありますし、現段階では設定ものコードも不明ですから、 正直答えようがありません。回答もなかなか付きにくいと思いますよ。 実際のところ、現象を再現させるだけなら、幾通りもの方法があるはずです。 極端な例で言えば、主キー列の MaxLength を 0 にした上で、DataGridView の DataError イベントを e.ThrowException = False にしておくとか。 とりあえず、当方 VB2008 で実験コードを書いてみましたが、Enter キー押下時に 入力した値が勝手に消えてしまうことはありませんでした。 Public Class Form1 Private WithEvents tbl As DataTable Private WithEvents dgv As DataGridView Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load tbl = New DataTable("生産型") Dim col0 As DataColumn = tbl.Columns.Add("type", GetType(String)) Dim col1 As DataColumn = tbl.Columns.Add("min", GetType(Decimal)) Dim col2 As DataColumn = tbl.Columns.Add("max", GetType(Decimal)) Dim col3 As DataColumn = tbl.Columns.Add("plusLtd", GetType(Decimal)) Dim col4 As DataColumn = tbl.Columns.Add("minusLtd", GetType(Decimal)) Dim col5 As DataColumn = tbl.Columns.Add("memo", GetType(String)) col0.AllowDBNull = False col1.AllowDBNull = True col2.AllowDBNull = True col3.AllowDBNull = True col4.AllowDBNull = True col5.AllowDBNull = True tbl.PrimaryKey = New DataColumn() {col0} dgv = New DataGridView() With {.Name = "dgv"} dgv.DataSource = tbl dgv.Dock = DockStyle.Fill Controls.Add(dgv) End Sub End Class > 1、データグリッドビューの空白行はnull許容に関係無しに必ず消えるのかどうか。 ここでいう空白行というのは、AllowUserToAddRows = True の際に表示される、 新規入力用の末尾行の事ですよね。 新規入力行は、入力を開始した時点で新規行では無くなります(.IsNewRow = False になる)。 入力中は、「編集を開始したが、その値は未確定で DataTable には反映されていない状態」です。 他の行に移動したり EndEdit メソッドを呼び出したりすれば、値は確定され、 その行は DataTable 側に反映された状態に変わりますが、値が確定する前の段階では、 たとえば入力エラーや Esc キーなどにより、未入力状態に戻る可能性があります。 # 質問の回答になっているかどうか分かりませんが。
分類:[.NET]
聞きたいことがあります。
と その前に前回私が途中で打ち切ってしまった投稿のことなのですが、
その後いろいろ投稿と注意が飛んできていたので今回から途中できらないこととなるべく敬語を使うように気をつけますのでよろしくお願いします。
ちなみに前回のプログラムは晴れて失敗し、(いろんな意味で)自爆しました。
ですが、まだあきらめていません。いつか自爆します。
えと今回、質問したいことはバインドしたデータグリッドビューの空白行についてです。
今グループワークをしているのですが、データグリッドビュー(以下DGV)の空白行が打ち込んだとき空きが出ていると行ごと消えてしまいます。
たとえば
生産型(主キーnull許容無し) 値1 値2 値3 値4 メモ
と定義が書かれている場合、(値1からメモまでnull許容可能。←許容してるのに。) 値1から値4はfloat型 メモはnvercharです。
A 11.1 11.1 2 空白 頭我天才と順番に打ち込みエンターをを押しても行が削除されます。
削除の原因がnull許容してないからだ!と思って許容させてみても変わりません。
コードは
すいません 課題の関係上これ以上書き込めないんですm−−m
ですが データグリッドビューの異常を聞くだけなら多分グレーラインなんで、
多分大丈夫
聞きたいことをまとめますと、
1、データグリッドビューの空白行はnull許容に関係無しに必ず消えるのかどうか。
2、データグリッドビュー関係で過去コレと同じような異常に見舞われたことがあり、回復させた経験がある方いらっしゃいませんでしょうか?
よろしくお願いしますm−−m
削除キーは1515です