C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: datagridview イベントについてw


(過去ログ 30 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■14326 / inTopicNo.1)  datagridview イベントについてw
  
□投稿者/ しほちゃん★ (17回)-(2008/02/15(Fri) 09:19:59)

分類:[.NET 全般] 

No14325 (しほちゃん★ さん) に返信
環境vb2005 

いつもお世話になっております。
datagridで明細を作っております。
datagrid(colmun,row).value ⇒7列の値が変わったら7列の値をすべて合計したいのですが
合計するサブルーチン《 sum()》は作成したのですが
7列●行の値が変わったときのイベントがわかりません。
current cell change だと意味が違います。
調べた結果、EditingControlShowingが適正だとおもいます。
EditingControlShowingはセル内の
値が変わったら走るイベントですか?

引用返信 編集キー/
■14327 / inTopicNo.2)  Re[1]: datagridview イベントについてw
□投稿者/ 魔界の仮面弁士 (626回)-(2008/02/15(Fri) 09:50:31)
2008/02/15(Fri) 10:05:49 編集(投稿者)
No14326 (しほちゃん★ さん) に返信
>  datagridで明細を作っております。
DataGridView ではなく、DataGrid の方なのですね?

それは、System.Windows.Forms 名前空間の DataGrid を指しているのでしょうか。
それとも、System.Web.UI.WebControls 名前空間の DataGrid でしょうか。

>  調べた結果、EditingControlShowingが適正だとおもいます。
あれ? という事は、実は System.Windows.Forms.DataGridView なのでしょうか。
……DataGrid ではなく、DataGridView だと仮定して回答します。

>  datagrid(colmun,row).value  ⇒7列の値が変わったら7列の値をすべて合計したいのですが
丸括弧表記という事は、C# ではなく、VB なのかな…。
とりあえず、VB2005 と仮定しておきます。


>  EditingControlShowingはセル内の
>  値が変わったら走るイベントですか?
DataGridView で入力を開始すると、TextBox や ListBox(ComboBox) のような状態になりますよね。
そうした「入力用のコントロール」が表示される際に発生するイベントです。

EditingControlShowing では、e.Control にて、その入力用コントロールを受け取れますので、
あとは、その TextBox のイベント(TextChanged や KeyPress や Leave など)や
プロパティ(Text や BackColor など)を利用する…という流れになります。


>  7列●行の値が変わったときのイベントがわかりません。
DataSet 側のイベントとして受け取りたいのでしょうか。
それとも、DataGridView 側のイベントとして受け取りたいのでしょうか。

DataSet 側で行うなら、リレーションを貼れば、「合計値を自動計算させる列」を
DataTable の列として用意する事もできますね。

Public Class Form1
    Private WithEvents dgv1 As New DataGridView()
    Private ds As DataSet
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        ds = CreateSampleDataSet()
        dgv1.DataSource = ds.Tables("Main")
        dgv1.AutoResizeColumns()
        dgv1.Dock = DockStyle.Fill
        Controls.Add(dgv1)
    End Sub
    Private Sub Form1_Shown(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Shown
        dgv1.AutoResizeColumns()
    End Sub

    Private Shared Function CreateSampleDataSet() As DataSet
        Dim ds As New DataSet()

        Dim tblMain As DataTable = ds.Tables.Add("Main")
        tblMain.PrimaryKey = New DataColumn() { _
            tblMain.Columns.Add("売上ID", GetType(Integer)), _
            tblMain.Columns.Add("明細ID", GetType(Integer))}
        tblMain.Columns.Add("商品CD", GetType(String))
        tblMain.Columns.Add("金額", GetType(Decimal))

        tblMain.Rows.Add(1, 1, "AAAA", 1500D)
        tblMain.Rows.Add(1, 2, "BBBB", 500D)
        tblMain.Rows.Add(1, 3, "CCCC", 200D)
        tblMain.Rows.Add(1, 4, "DDDD", 800D)
        tblMain.Rows.Add(2, 1, "AAAA", 1001D)
        tblMain.Rows.Add(2, 2, "BBBB", 2020D)
        tblMain.Rows.Add(2, 3, "CCCC", 3300D)

        Dim tblSummary As DataTable = ds.Tables.Add("Summary")
        tblSummary.PrimaryKey = New DataColumn() { _
            tblSummary.Columns.Add("売上ID", GetType(Integer))}
        tblSummary.Columns.Add("売上日", GetType(Date))

        tblSummary.Rows.Add(1, #12/24/2007#)
        tblSummary.Rows.Add(2, #12/25/2007#)

        ds.Relations.Add( _
            "relSummary_Main", _
            tblSummary.Columns("売上ID"), _
            tblMain.Columns("売上ID"))

        tblSummary.Columns.Add("総額", GetType(Decimal), "SUM(Child.金額)")
        tblMain.Columns.Add("総額", GetType(Decimal), "Parent.総額")

        Return ds
    End Function
End Class

引用返信 編集キー/
■14336 / inTopicNo.3)  Re[2]: datagridview イベントについてw
□投稿者/ しほちゃん★ (18回)-(2008/02/15(Fri) 14:07:52)
No14327 (魔界の仮面弁士 さん) に返信
> 2008/02/15(Fri) 10:05:49 編集(投稿者)
>
> DataGridView ではなく、DataGrid の方なのですね?

datagridviewです。

環境はVB2005 です。^^

上記の説明でわかりました。ありがとうございました。いろいろできそうですね。
★ ☆ また宜しくお願いいたします。
引用返信 編集キー/
■14337 / inTopicNo.4)  Re[3]: datagridview イベントについてw
□投稿者/ しほちゃん★ (19回)-(2008/02/15(Fri) 14:08:04)
No14336 (しほちゃん★ さん) に返信
> ■No14327 (魔界の仮面弁士 さん) に返信
>>2008/02/15(Fri) 10:05:49 編集(投稿者)
>>
>>DataGridView ではなく、DataGrid の方なのですね?
>
> datagridviewです。
>
> 環境はVB2005 です。^^
>
> 上記の説明でわかりました。ありがとうございました。いろいろできそうですね。
> ★ ☆ また宜しくお願いいたします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -