Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 107,528

HOME > .NET Framework > Forum > การคำนวนตัวเลขใน datagrid ผลรวมใน datagrid รบกวนพี่ๆๆ ด้วยครับ





 

การคำนวนตัวเลขใน datagrid ผลรวมใน datagrid รบกวนพี่ๆๆ ด้วยครับ

 



Topic : 053728



โพสกระทู้ ( 40 )
บทความ ( 0 )



สถานะออฟไลน์




อยากทราบ code ที่เกี่ยวกับ การคำนวนตัวเลขใน datagrid เช่น
ลำดับที่ ชื่อสินค้า ราคา
01 00001 20
02 00002 30
ผลรวม 50

ไม่ทราบว่าต้องเขียน code ใน datagrid ยังงัยครับ

ขอบคุณที่มาช่วยครับ
แต่ความต้องการตามรูปที่แนบมาเลยครับ
wasan1

ไม่ทราบว่าจะพอมี code กันรึเปล่าครับ



Tag : .NET, VB.NET, VS 2003 (.NET 1.1), VS 2005 (.NET 2.x), VS 2008 (.NET 3.x), VS 2010 (.NET 4.x)









ประวัติการแก้ไข
2010-12-27 11:35:38
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-12-27 09:22:57 By : zagi View : 3697 Reply : 48
 

 

No. 1

Guest


ดึง datasource ของ datagridview มาใส่ dataview แล้วก็จัดการวนลูป






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-27 09:28:59 By : ตังค์แมน
 


 

No. 2



โพสกระทู้ ( 50 )
บทความ ( 0 )



สถานะออฟไลน์


ใช้ even cell click ของ datagridview นะคับ

คือวนลูป คำนวนค่าไปนะคับ อย่างเช่น

01 00001 20
02 00002 30

โค้ดตัวอย่างผมเอา textbox มารับค่านะครับ

Code (C#)
if (dataGridView1.RowCount > 0)
            {
                int sum_money = 0;
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    sum_money = sum_money + Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value.ToString());
                    textBox3.Text = sum_money.ToString();

                }
            }


ไม่รู้ว่าตรงความต้องการหรือเปล่าครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-12-27 10:00:26 By : piag3026
 

 

No. 3

Guest


แล้วถ้าต้องการคำนวนค่าใน datagrid เลยล่ะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-08 15:30:51 By : ben
 


 

No. 4

Guest


เขียนยังไงครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-08 15:31:53 By : ben
 


 

No. 5



โพสกระทู้ ( 15 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

Code
Dim max As Integer = DataGridView1.Rows.Count - 1 Dim total As String = "Total --->" Dim tot As Integer = 0 Dim Price As Integer = 0 For Each row As DataGridViewRow In DataGridView1.Rows tot += row.Cells(4).Value price += row.Cells(5).Value Next DataGridView1.Rows(max).Cells(3).Value = Total DataGridView1.Rows(max).Cells(4).Value += price



จัดไปครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-09 11:50:29 By : kunakorn-s
 


 

No. 6



โพสกระทู้ ( 287 )
บทความ ( 0 )



สถานะออฟไลน์


Code
SELECT field, field, SUM(field) FROM T GROUP BY GROUPING SETS ((field,field), ())

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-10 15:20:47 By : adminliver
 


 

No. 7

Guest


ในภาษา C# ครับ
เขียนยังไง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-11 09:42:11 By : Gust
 


 

No. 8

Guest


งงCodeของ VBครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-11 10:21:32 By : Gust
 


 

No. 9



โพสกระทู้ ( 3,950 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 8 เขียนโดย : Gust เมื่อวันที่ 2017-08-11 10:21:32
รายละเอียดของการตอบ ::
เขามี เว็บ convert นะครับ

เข้า google แล้วค้นคำว่า vb to C#


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-11 10:28:10 By : lamaka.tor
 


 

No. 10

Guest


ผมใช้ Visual Studio 2015
ช่วยผมด้วยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-11 10:28:52 By : Gust
 


 

No. 11



โพสกระทู้ ( 3,950 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 10 เขียนโดย : Gust เมื่อวันที่ 2017-08-11 10:28:52
รายละเอียดของการตอบ ::
http://converter.telerik.com/


ของแบบนี้ต้องลองเองครับ ถึงจะรู้

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-11 10:36:18 By : lamaka.tor
 


 

No. 12

Guest


ขอบคุณ TOR_CHEMISTRYครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-11 11:49:36 By : Gust
 


 

No. 13

Guest


ไม่ได้ครับ
ของผมมันจะมีข้อมูล
1.รหัสสินค้า
2.ชื่อสินค้า
3.ราคาขาย
4.จำนวน
5.จำนวนเงิน
แล้วผมอยากให้กรอกจำนวน ให้คำนวนจำนวนเงินเลยครับ
เช่นรหัสสินค้า คือ 1 ชื่อสินค้า คือ ไอติม ราคา คือ 10
แล้วผมอยากให้กรอกจำนวนเข้าไปแล้ว ให้มันคำนวนจำนวนเงินเลยครับเขียนยังไง
รบกวนอีกครั้งครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-11 21:51:51 By : Gust
 


 

No. 14



โพสกระทู้ ( 114 )
บทความ ( 3 )



สถานะออฟไลน์
Facebook

ใช้ Event CellEndEdit ครับ แล้ว หาผลลัพธ์ บวก ลบ คูณ หาร อะไรก็ว่าไป

ตัวอย่าง

Code (VB.NET)
  Friend totalxS, totalyS, totalzS As Decimal


    Private Sub sumDatagridview()
        'บวก datagrid
        For x = 0 To DGV1.RowCount - 1
            If IsDBNull(Me.DGV1.CurrentRow.Cells(4).Value) _
                OrElse Me.DGV1.CurrentRow.Cells(4).Value = Nothing _
                OrElse Me.DGV1.CurrentRow.Cells(4).Value < 0 Then
                Me.DGV1.CurrentRow.Cells(4).Value = 0.0
            End If
            Me.DGV1.Rows(x).Cells(6).Value = CDec(Me.DGV1.Rows(x).Cells(2).Value) * CDec(Me.DGV1.Rows(x).Cells(3).Value) _
                  - CDec(Me.DGV1.Rows(x).Cells(4).Value)
            totalxS += CDec(DGV1.Rows(x).Cells(6).Value)
            totalyS += CDec(DGV1.Rows(x).Cells(3).Value)
            totalzS = Me.DGV1.Rows.Count
        Next
        Me.lblPWgetTotalPrice.Text = totalxS.ToString("N2")
        Me.lblPWtotalXYZ.Text = "รายการ " & totalzS.ToString & " | ปริมาณ " & totalyS.ToString
        totalxS = Nothing
        totalyS = Nothing
        totalzS = Nothing
    End Sub


Code (VB.NET)
 
Private Sub DGV1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DGV1.CellEndEdit
    Call sumDatagridview()
End Sub


เวลาแก้ไขก็บังคับให้ยูสใส่ได้เฉพาะตัวเลข เพราะถ้าใส่ตัวอักษรจะคำนวนไม่ได้ โดยใช้ Event EditingControlShowing
Code (VB.NET)
Friend Sub KeyPress_decimal(ByVal sender As Object, ByVal e As KeyPressEventArgs)
        If Char.IsControl(e.KeyChar) = False Then
            If Char.IsDigit(e.KeyChar) Or e.KeyChar = "." Then
                If sender.Text.Contains(".") Then
                    If sender.Text.Split(".")(1).Length < 2 Then
                        If Char.IsDigit(e.KeyChar) = False Then
                            e.Handled = True
                        End If
                    Else
                        e.Handled = True
                    End If
                End If
            Else
                e.Handled = True
            End If
        End If
    End Sub

 Private Sub DGV1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DGV1.EditingControlShowing
        If Me.DGV1.CurrentCell.ColumnIndex = 4 Then
         AddHandler CType(e.Control, TextBox).KeyPress, AddressOf KeyPress_decimal
        End If
        If Me.DGV1.CurrentCell.ColumnIndex = 3 Then
            AddHandler CType(e.Control, TextBox).KeyPress, AddressOf KeyPress_decimal
        End If
    End Sub



ประวัติการแก้ไข
2017-08-12 09:19:55
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-12 09:09:53 By : pakyaudio
 


 

No. 15

Guest


งงมากครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-13 21:47:15 By : Gust
 


 

No. 16

Guest


คุณpakyaudio Cell(6)คืออะไรครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-14 12:15:54 By : Gust
 


 

No. 17



โพสกระทู้ ( 114 )
บทความ ( 3 )



สถานะออฟไลน์
Facebook

cell(6) คือ ตารางของดาต้ากริตที่ต้องการคำนวนครับ

215231

Code (VB.NET)
'ผมประกาศตัวแปร 3 ตัว
Friend totalxS, totalyS, totalzS As Decimal


  Private Sub sumDatagridview()
      'บวก datagrid
      For x = 0 To DGV1.RowCount - 1
          'เงื่อนไขถ้าเซลล์ว่างไว้หรือมีค่าน้อยกว่า 0 ให้ใส่ 0 เข้าไป
          If IsDBNull(Me.DGV1.CurrentRow.Cells(4).Value) _
              OrElse Me.DGV1.CurrentRow.Cells(4).Value = Nothing _
              OrElse Me.DGV1.CurrentRow.Cells(4).Value < 0 Then
              Me.DGV1.CurrentRow.Cells(4).Value = 0.0
          End If
'ตามรูป หมายเลขที่ 1
          Me.DGV1.Rows(x).Cells(6).Value = CDec(Me.DGV1.Rows(x).Cells(2).Value) * CDec(Me.DGV1.Rows(x).Cells(3).Value) _
                - CDec(Me.DGV1.Rows(x).Cells(4).Value)
'หาผลรวม
          totalxS += CDec(DGV1.Rows(x).Cells(6).Value)
          totalyS += CDec(DGV1.Rows(x).Cells(3).Value)
          totalzS = Me.DGV1.Rows.Count
      Next
'ตามรูปหมายเลข 2

      Me.lblPWgetTotalPrice.Text = totalxS.ToString("N2")
      Me.lblPWtotalXYZ.Text = "รายการ " & totalzS.ToString & " | ปริมาณ " & totalyS.ToString
      totalxS = Nothing
      totalyS = Nothing
      totalzS = Nothing
  End Sub

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-14 14:46:44 By : pakyaudio
 


 

No. 18

Guest


รูปหน้าจอ
คืออยากให้กรอกจำนวนไปแล้วคำนวนจำนวนเงินเลยอ่ะครับ
ส่วนของ Code C#
Code
รบกวนผู้รู้ช่วยผมด้วยครับ มือใหม่ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-15 13:18:09 By : Gust
 


 

No. 19

Guest


โทดทีครับรูปใหญ่ไป
รูปหน้าจอ
คืออยากให้กรอกจำนวนไปแล้วคำนวนจำนวนเงินเลยอ่ะครับ
Code
รบกวนผู้รู้ช่วยผมด้วยครับ มือใหม่ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-15 13:29:35 By : Gust
 


 

No. 20



โพสกระทู้ ( 3,950 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 19 เขียนโดย : Gust เมื่อวันที่ 2017-08-15 13:29:35
รายละเอียดของการตอบ ::
ลองเปลี่ยนจาก event CellValueChanged
มาใช้ CellEndEdit มันก็จะคำนวนให้เราเมื่อ พิมเรียบร้อยแล้ว

ประมาณนี้

Code (C#)
 private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            int sum = 0;
            try {for (int i = 0 ;i<dataGridView1.RowCount;i++)
            {
                sum += (int)dataGridView1[3, i].Value;
            } }catch{}

            this.Text =  sum.ToString();
  
        }


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-15 15:09:44 By : lamaka.tor
 


 

No. 21

Guest


มันก็เหมือนกันไมใช่หรอครับ
และก็ยังไม่คำนวนจำนวนเงิน คอลัมน์สุดท้ายใน Datagrid ให้ด้วยครับ
รบกวนอีกครั้งครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-15 20:16:51 By : Gust
 


 

No. 22



โพสกระทู้ ( 3,950 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

CellValueChanged จะทำงานทุกครั้งที่ User กดแป้นพิมซึ่งจะเกิด Error ง่ายในแง่ของการพิมตัวเลข
ส่วน CellEndEdit จะทำงานก็ต่อเมื่อ User พิมเสร็จแล้วก็วางเม้าไว้ที่อื่น ครับ

หมายความว่า User ใส่ตัวเลข ราคาขายในช่องที่ 2 กับ จำนวน ในช่องที่ 3 แล้วช่องที่ 4 ก็จะคำนวณให้เรา


ทีนี้ก็ต้องดูที่โค้ดครับว่าเขียนถูกตามที่ควรจะเป็นรึไม่
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-15 23:24:19 By : lamaka.tor
 


 

No. 23

Guest


กด
จากรูปตัวอย่างนะครับคืออยากให้คำนวนราคาขาย * จำนวน
โดยกรอกเฉพาะจำนวนแล้วคำนวนเลยครับ
gg
แล้วถึงจะได้จำนวนเงินลงใน datagrid
ปล.จำนวนเงินผมใช้กรอกเอาก่อนนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-16 09:48:11 By : Gust
 


 

No. 24

Guest


รบกวนอีกครั้งครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-16 09:50:06 By : Gust
 


 

No. 25



โพสกระทู้ ( 3,950 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 24 เขียนโดย : Gust เมื่อวันที่ 2017-08-16 09:50:06
รายละเอียดของการตอบ ::
โค้ดตอนนี้เขียนยังไงครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-16 10:10:11 By : lamaka.tor
 


 

No. 26

Guest


dfgd
เขียนแค่ให้คำนวนจาก textboxtotal
คราวนี้อยากให้มันคำนวนจาก datagrid ครับ
ต้องทำยังไง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-16 11:28:22 By : Gust
 


 

No. 27



โพสกระทู้ ( 3,950 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 26 เขียนโดย : Gust เมื่อวันที่ 2017-08-16 11:28:22
รายละเอียดของการตอบ ::
ในโค้ดไม่มีการคำนวนในช่องที่ 4 นะครับ

Code (C#)
 private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            try 
            {
                //เพิ่มการคำนวน ช่องที่ 4 ไปด้วยทุกครั้งที่มีการแก้ไข ช่องที่ 2 หรือ/และ ช่องที่ 3
                dataGridView1[4, e.RowIndex].Value = (int)dataGridView1[2, e.RowIndex].Value * (int)dataGridView1[3, e.RowIndex].Value;
                int sum = 0;
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                    sum += (int)dataGridView1[4, e.RowIndex].Value;

                this.Text = sum.ToString();
            }
            catch { }

        }



ผมใช้ try เพื่อดักจับ error ที่จะเกิดขึ้นหาก User กรอกผิด
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-16 12:29:23 By : lamaka.tor
 


 

No. 28

Guest


ใช่ครับ ช่องที่ 4 คือจำนวน ผมอยากให้กรอกไปแล้ว คำนวนในช่องที่ 5 เลยอ่ะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-16 21:53:55 By : Gust
 


 

No. 29

Guest


ตอบความคิดเห็นที่ : 28 เขียนโดย : Gust เมื่อวันที่ 2017-08-16 21:53:55
รายละเอียดของการตอบ ::
... ใส่ความคิดเห็นตรงนี้.......

มันต้องเขียนยังไง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-16 21:55:01 By : Gust
 


 

No. 30

Guest


รบกวนด้วยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-17 12:48:58 By : Gust
 


 

No. 31



โพสกระทู้ ( 3,950 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 30 เขียนโดย : Gust เมื่อวันที่ 2017-08-17 12:48:58
รายละเอียดของการตอบ ::
No. 27


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-17 15:10:32 By : lamaka.tor
 


 

No. 32

Guest


ได้แล้วครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-19 08:45:41 By : Gust
 


 

No. 33

Guest


มีปัญหาอีกแล้วครับคือ
ถ้าไม่อยากทำให้คอลัมน์ใน Datagridไม่ให้สามารถทำงานได้ต้องทำยังไงหรอครับ
ปล.ยังไม่ได้เขียนโค้ด
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-19 09:01:13 By : Gust
 


 

No. 34

Guest


ขอตัวอย่างโค้ดหน่อยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-19 12:26:47 By : Gust
 


 

No. 35

Guest


รบกวนอีกพี่ๆครับ
string PROID = dataGridViewproduct.CurrentRow.Cells[0].Value.ToString();
string PRONAME = dataGridViewproduct.CurrentRow.Cells[1].Value.ToString();
string PROPRICE = dataGridViewproduct.CurrentRow.Cells[4].Value.ToString();

this.dataGridViewSale.Rows.Add(PROID, PRONAME, PROPRICE, "", "");
ต้องการเช็คค่าใน DataGridView ว่ามีค่าซ้ำกันหรือไม่ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-20 14:38:05 By : dew
 


 

No. 36



โพสกระทู้ ( 3,950 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 35 เขียนโดย : dew เมื่อวันที่ 2017-08-20 14:38:05
รายละเอียดของการตอบ ::
หลักการบ้านๆเลยนะ

1. กรณีที่มีข้อมูลอยู่แล้วให้เพิ่มจำนวน เช่นจาก 4 เป็น 5 จากนั้นก็
2. กรณีที่ไม่มีข้อมูลอยู่แล้วให้เพิ่ม row ใหม่

เมื่อเช็ค 1 หรือ 2 แล้ว ก็ให้คิดราคา รวม

Code (C#)
string PROID = dataGridViewproduct.CurrentRow.Cells[0].Value.ToString();
                string PRONAME = dataGridViewproduct.CurrentRow.Cells[1].Value.ToString();
                string PROPRICE = dataGridViewproduct.CurrentRow.Cells[4].Value.ToString();
                bool b = false; // ไว้เช็คว่ามีรึไม่มี 
                    // for loop เพื่อเช็คว่ามีรึไม่
                for (int i = 0; i < dataGridView1.RowCount; i++)
                {
                    //เช็คว่า PROID ตรงกันไม๊  
                    if(dataGridView1[0,i].Value.ToString() == PROID)
                    {
                        b = true;//ถ้าตรงกันก็เพิ่มจำนวนซะเลย
                        dataGridView1[3, i].Value = (int)dataGridView1[3, i].Value + 1;// เพิ่มมันซะเลย +1 ก็เพิ่มที่ละ 1 นั่นแหละ
                        dataGridView1[4, i].Value = (int)dataGridView1[2, i].Value * (int)dataGridView1[3, i].Value;//มันก็ต้องมาคิดยอดรวมใหม่อ่ะนะ PROPRICE*count
                        return;// ถ้าตรงกัน คำนวณ ทุกอย่างเรียบร้อย ให้เด้งออกไปเลย (จะอยู่ต้อทำไมละ 5555)
                    }
                }

                //เมื่อหลุด for มาได้(b = false) แสดงว่าไม่มี ข้อมูลใน dataGridView ให้เพิ่ม row ใหม่
                this.dataGridViewSale.Rows.Add(PROID, PRONAME, PROPRICE, 1, PROPRICE); // 1*PROPRICE = PROPRICE เผื่อมีคนสงสัยใคร่ถาม ที่นี้ User เขาจะเปลี่ยน จาก 1 เป็น 2 3 4 ก็แล้วแต่เขา เราทำ ค่า defualt เป็น 1 ไว้เฉยๆ



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-20 20:07:47 By : lamaka.tor
 


 

No. 37

Guest


ลองดูแล้วครับ
ยังตรวจสอบไม่ได้ว่าซ้ำกันหรือไม่ครับ
รบกวนอีกครั้งครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-21 10:21:50 By : Gust
 


 

No. 38

Guest


ตอบความคิดเห็นที่ : 37 เขียนโดย : Gust เมื่อวันที่ 2017-08-21 10:21:50
รายละเอียดของการตอบ ::
งั้นลองเอาโค้ดมาดูครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-21 11:06:15 By : ttt
 


 

No. 39

Guest


private void dataGridViewproduct_MouseDoubleClick(object sender, MouseEventArgs e)
{
int i = 0;
string PROID = dataGridViewproduct.CurrentRow.Cells[0].Value.ToString();
string PRONAME = dataGridViewproduct.CurrentRow.Cells[1].Value.ToString();
string PROPRICE = dataGridViewproduct.CurrentRow.Cells[4].Value.ToString();

this.dataGridViewSale.Rows.Add(PROID, PRONAME, PROPRICE, "", "");

if (dataGridViewSale[0,i].Value.ToString() == PROID)
{
dataGridViewSale[0, i].Value = PROID;
}
else
{
MessageBox.Show("ข้อมูบซ้ำกัน กรุณาเลือกข้อมูลใหม่", "..",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
}

this.dataGridViewSale.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
this.dataGridViewSale.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
this.dataGridViewSale.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
this.dataGridViewSale.Columns[4].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;



if (dataGridViewSale.Rows.Count > 0)
{
int sum = 0;
for ( i = 0; i < dataGridViewSale.Rows.Count; i++)
{
if (dataGridViewSale.Rows[i].Cells[4].Value != null && dataGridViewSale.Rows[i].Cells[4].Value.ToString() != "")
{
sum = sum + Convert.ToInt32(dataGridViewSale.Rows[i].Cells[4].Value.ToString());
}
}
textBoxtotal.Text = sum.ToString();
}

}
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-21 11:11:31 By : benz
 


 

No. 40



โพสกระทู้ ( 3,950 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 39 เขียนโดย : benz เมื่อวันที่ 2017-08-21 11:11:31
รายละเอียดของการตอบ ::
มันไม่ตรงกับโค้ดที่ให้ไปนี่ครับ มันจะได้ยังไงละครับ

ลองเอาแกะโค้ดที่ให้ไปดู
ลองลบ

Code (C#)
int i = 0;
string PROID = dataGridViewproduct.CurrentRow.Cells[0].Value.ToString();
string PRONAME = dataGridViewproduct.CurrentRow.Cells[1].Value.ToString();
string PROPRICE = dataGridViewproduct.CurrentRow.Cells[4].Value.ToString();

this.dataGridViewSale.Rows.Add(PROID, PRONAME, PROPRICE, "", "");

if (dataGridViewSale[0,i].Value.ToString() == PROID)
{
dataGridViewSale[0, i].Value = PROID;
}
else
{
MessageBox.Show("ข้อมูบซ้ำกัน กรุณาเลือกข้อมูลใหม่", "..",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
}

this.dataGridViewSale.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
this.dataGridViewSale.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
this.dataGridViewSale.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
this.dataGridViewSale.Columns[4].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;



if (dataGridViewSale.Rows.Count > 0)
{
int sum = 0;
for ( i = 0; i < dataGridViewSale.Rows.Count; i++)
{
if (dataGridViewSale.Rows[i].Cells[4].Value != null && dataGridViewSale.Rows[i].Cells[4].Value.ToString() != "")
{
sum = sum + Convert.ToInt32(dataGridViewSale.Rows[i].Cells[4].Value.ToString());
}
}

}



ออกไปเลย ครับ
แล้วแทนด้วยโค้ดที่ให้ไป

หลักการ เช็คโค้ดแบบบ้าน ๆ
เวลาได้โค้ดอะไรมา อย่าเพิ่งดัดแปลงโค้ดเค้า ทำความเข้าใจกับมันซักก่อนว่าขั้นตอนมันเป็นยังไง
validate ตัวเองก่อนว่าใช้กับโค้ดนั้นได้ไม๊ ถ้าได้ค่อยดัดแปลง ถ้าทำตามแล้วไม่ได้จะได้รู้ว่าโค้ดเขาผิดจริง
ไม่งั้นเราจะไม่รู้ว่าที่ไม่ได้เป็นเพราะโค้ดที่เขาให้มาหรือเป็นเพราะเราทำไม่เป็นกันแน่ ครับ
ลองทำตามดูไม่ได้ค่อยมาดูกันว่าติดที่ไหนครับ
เพราะผมก็ใช้โค้ดนี้อยู่เกือบ 3000 ปีแล้ว 555

1. กรณีที่มีข้อมูลอยู่แล้วให้เพิ่มจำนวน เช่นจาก 4 เป็น 5 จากนั้นก็
2. กรณีที่ไม่มีข้อมูลอยู่แล้วให้เพิ่ม row ใหม่

เมื่อเช็ค 1 หรือ 2 แล้ว ก็ให้คิดราคา รวม

เสียเวลาทำตามโค้ดเขาดูซัก 5 นาที ดีกว่านั่งงมโข่งด้วยความผิดพลาดของตัวเองเป็นอททิตย์(5 นาที กับ 1 อาทิต เวลาโคตร ต่างกันเลย)


ยึดกระทู้นี้เป็นหลักครับ
ต่อให้ถามไปอีก 1000 กระทู้ คิดรึว่าจะเช็คคำตอบที่คนอื่นเข้ามาตอบทุกกระทู้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-21 11:29:30 By : lamaka.tor
 


 

No. 41

Guest


ใช้โค้ดตัวไหนดีอ่ะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-21 13:26:49 By : gust
 


 

No. 42

Guest


โค้ดที่ทำให้datagrid เวลาซ้ำกันแล้วให้ขึ้นแจ้งเตือน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-21 13:32:13 By : gust
 


 

No. 43

Guest


คือจะใส่ อีเว้นไหนให้แจ้งเตือน
แก้ตามแล้วครับ
int i = 0;
string PROID = dataGridViewproduct.CurrentRow.Cells[0].Value.ToString();
string PRONAME = dataGridViewproduct.CurrentRow.Cells[1].Value.ToString();
string PROPRICE = dataGridViewproduct.CurrentRow.Cells[4].Value.ToString();

bool b = false;

for (i = 0; i < dataGridViewSale.RowCount; i++)
{
if (dataGridViewSale[0, i].Value.ToString() == PROID)
{
b = true;
dataGridViewSale[3, i].Value = (int)dataGridViewSale[3, i].Value + 1;
dataGridViewSale[4, i].Value = (int)dataGridViewSale[2, i].Value * (int)dataGridViewSale[3, i].Value;
return;
}
}
this.dataGridViewSale.Rows.Add(PROID, PRONAME, PROPRICE, "", "");
}
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-21 14:01:33 By : gust
 


 

No. 44



โพสกระทู้ ( 3,950 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 43 เขียนโดย : gust เมื่อวันที่ 2017-08-21 14:01:33
รายละเอียดของการตอบ ::
ก็ อีเว้นที่ทำค้างไว้แหละครับ

ถ้าสังเกตุ ความคิดเห็นที่. 40 ผมจะใช้คำว่า ลองลบ ....... ออกไปเลย ครับ
แล้วแทนด้วยโค้ดที่ให้ไป


ถ้าแปรตรงตัวหมายความว่าให้ลบ
Code (C#)
int i = 0;
string PROID = dataGridViewproduct.CurrentRow.Cells[0].Value.ToString();
string PRONAME = dataGridViewproduct.CurrentRow.Cells[1].Value.ToString();
string PROPRICE = dataGridViewproduct.CurrentRow.Cells[4].Value.ToString();

this.dataGridViewSale.Rows.Add(PROID, PRONAME, PROPRICE, "", "");

if (dataGridViewSale[0,i].Value.ToString() == PROID)
{
dataGridViewSale[0, i].Value = PROID;
}
else
{
MessageBox.Show("ข้อมูบซ้ำกัน กรุณาเลือกข้อมูลใหม่", "..",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
}

this.dataGridViewSale.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
this.dataGridViewSale.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
this.dataGridViewSale.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
this.dataGridViewSale.Columns[4].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;



if (dataGridViewSale.Rows.Count > 0)
{
int sum = 0;
for ( i = 0; i < dataGridViewSale.Rows.Count; i++)
{
if (dataGridViewSale.Rows[i].Cells[4].Value != null && dataGridViewSale.Rows[i].Cells[4].Value.ToString() != "")
{
sum = sum + Convert.ToInt32(dataGridViewSale.Rows[i].Cells[4].Value.ToString());
}
}

}



ออกไป แล้ว แทนด้วยโค้ดที่ให้ไปนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-21 16:25:40 By : lamaka.tor
 


 

No. 45



โพสกระทู้ ( 3,950 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

อันที่จริงผมไม่ชอบ MouseDoubleClick ขอใช้เป็น CellClick หรือ CellDoubleClick หรือ RowHeaderMouseClick ก็จะเข้าท่ากว่า
เช่น
Code (C#)
private void dataGridViewproduct_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if(e.RowIndex <0) return;//เช็คก่อนว่า dataGridViewproduct คลิกที่ RowIndex <0 รึป่าว หมายถึงต่ำกว่าแถวแรกอ่านะ
                
                int sum = 0;
                string PROID = dataGridViewproduct[0,e.RowIndex].Value.ToString();
                string PRONAME = dataGridViewproduct[1,e.RowIndex].Value.ToString();
                string PROPRICE = dataGridViewproduct[4,e.RowIndex].Value.ToString();
                bool b = false; // ไว้เช็คว่ามีรึไม่มี 
                    // for loop เพื่อเช็คว่ามีรึไม่
                for (int i = 0; i < dataGridViewSale.RowCount; i++)
                {
                    //เช็คว่า PROID ตรงกันไม๊  
                    if(dataGridViewSale[0,i].Value.ToString() == PROID)
                    {
                        b = true;//ถ้าตรงกันก็เพิ่มจำนวนซะเลย
                        dataGridViewSale[3, i].Value = (int)dataGridViewSale[3, i].Value + 1;// เพิ่มมันซะเลย +1 ก็เพิ่มที่ละ 1 นั่นแหละ
                        dataGridViewSale[4, i].Value = (int)dataGridViewSale[2, i].Value * (int)dataGridViewSale[3, i].Value;//มันก็ต้องมาคิดยอดรวมใหม่อ่ะนะ PROPRICE*count
                       sum += (int)dataGridViewSale[4, i].Value; // ก็คิด sum ไปด้วยเลยจะได้ไม่ต้องเสียเวลา
                    }
                }

                //เมื่อหลุด for มาได้(b = false) แสดงว่าไม่มี ข้อมูลใน dataGridView ให้เพิ่ม row ใหม่
            if(b = false)
             {
                this.dataGridViewSale.Rows.Add(PROID ,PRONAME , PROPRICE, 1, PROPRICE); // 1*PROPRICE = PROPRICE เผื่อมีคนสงสัยใคร่ถาม ที่นี้ User เขาจะเปลี่ยน จาก 1 เป็น 2 3 4 ก็แล้วแต่เขา เราทำ ค่า defualt เป็น 1 ไว้เฉยๆ
               sum += (int)dataGridViewSale[4, i].Value; // ก็คิด sum จาก PROPRICE  ถ้าหากยังงงอยู่อีก 1*PROPRICE = PROPRICE เหมือนเดิม 
              }

textBoxtotal.Text = sum.ToString();

}


โค้ดสั้นกระทับรัด ครบทุกความต้องการ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-08-21 16:55:30 By : lamaka.tor
 


 

No. 46



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


ปุ่มยกเลิกข้อมูลทำยังไงครับ
อันนี้ไม่เข้าใจจริงๆ
ขอโค้ดตัวอย่างหน่อยก็ดีครับ
รบกวนด้วยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-09-12 15:17:18 By : Gust
 


 

No. 47

Guest


ตอบความคิดเห็นที่ : 5 เขียนโดย : kunakorn-s เมื่อวันที่ 2017-08-09 11:50:29
รายละเอียดของการตอบ ::
แล้วถ้าค่าใน gridview มีการบวกเบิ้ล จะแก้ยังไงคะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-05-15 20:49:12 By : แนน
 


 

No. 48



โพสกระทู้ ( 106 )
บทความ ( 0 )



สถานะออฟไลน์


สรุป คือ: ไม่ได้อะไรเลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-05-16 08:40:02 By : Kenzero
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : การคำนวนตัวเลขใน datagrid ผลรวมใน datagrid รบกวนพี่ๆๆ ด้วยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2019 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่