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

Registered : 109,037

HOME > .NET Framework > Forum > ขอรบกวนอีกแล้วค่ะ การดึงข้อมูลCellจาก Grid3 อันอื่นมายัง Grid2 ที่ทำการ Datatable กับ Grid1 ค่ะ



 

ขอรบกวนอีกแล้วค่ะ การดึงข้อมูลCellจาก Grid3 อันอื่นมายัง Grid2 ที่ทำการ Datatable กับ Grid1 ค่ะ

 



Topic : 038709

Guest




จากกระทู้ถาม https://www.thaicreate.com/dotnet/forum/038578.html
จนแล้วจนรอด..ตอนนี้ทำได้หมดทั้ง 2 ข้อแล้วค่ะ พยายามสุด ๆ ต้องขอขอบคุณพี่ ๆ ทุกท่านมาก ๆ เลยนะคะ
แค่เรื่อง PK กับ FK ที่กวางพลาดไปนิดเดียวในข้อ 2 เล่นเอาหัวหมุนเลย

แต่ตอนนี้มีปัญหาใหม่เข้ามาอีกแล้วค่ะ คิดว่าเป็นปัญหาท้ายสุดของโปรเจคกวาง (หวังว่าจะเป็นเช่นนั้น) ^^
ปัญหานี้อาจจะยาวหน่อยนะคะ กวางจะพยายามอธิบายปัญหาให้เคลียร์ที่สุดเลยค่ะ

คือเนื่องจากในการจ่ายยา กวางได้ทำการ binding ข้อมูล 2 Grid จาก Grid 1 (ยา) และ Grid 2 (ใบจ่ายยา)
และใน Grid 2 (ใบจ่ายยา) นั้นต้องมีการใส่จำนวนของยาที่ต้องการจ่ายลงไป

การทำงานหากเลือกข้อมูลแล้วใส่จำนวนยาไป ก็จะทำงานได้อย่างปกติค่ะ

แต่เมื่อกวางทำการคลิกตัวยาใน Grid2 เพื่อทำการยกเลิกตัวยาที่จะจ่ายไปแล้วนะนั้น จำนวนยาที่กรอกลงไปในตัวยาอื่น ๆ ที่ยังอยู่ใน Grid2 ก็จะถูกล้างออกไปหมดเลยอ่ะคะ

อาจารย์เลยให้วิธีแก้ปัญหาโดยการสร้าง Grid3 เพื่อทำการเก็บ ID และจำนวนยา ที่ได้ทำการเลือกเข้ามายัง Grid 2 ไว้
เพื่อเมื่อทำการยกเลิกตัวยาตัวใดตัวนึงไป...Grid 2 จะได้ดึงค่าจำนวนจาก Grid 3 มา ข้อมูลจำนวนตัวยาก่อนหน้าจะได้ไม่หายไป

ตอนนี้กวางสร้างและทำงาน Add ข้อมูลที่ถูกเลือกใน Grid2 ลง Grid3 ได้แล้วค่ะ แต่ปัญหาก็คือ...กวางจะดึงค่าข้อมูลจำนวนที่อยู่ใน Grid3 มายัง Grid2 ได้อย่างไร ในกรณีเกิดปัญหาที่แจ้งไว้ข้างต้น

รบกวนพี่ ๆ ด้วยนะคะ หรือถ้าพี่ ๆ ท่านใด มีวิธีที่ไม่ต้องสร้าง Grid3 ก็ได้นะคะ ยินดีอย่างยิ่งเลยค่า

ส่วนตัว Code นะคะ

ส่วนการ Binding ของทั้ง 2 Grid (Grid1 and Grid2)

Code (VB.NET)
 Function Get_MsByType() As DataTable

        If (lb_TypePet.Text = "สุนัข") Then
            lb_TypePet.Text = "D"
        ElseIf (lb_TypePet.Text = "แมว") Then
            lb_TypePet.Text = "C"
        End If

        Dim da As SqlDataAdapter = New SqlDataAdapter 'ใช้ดึงข้อมูลจากฐานข้อมูลเก็บไว้ใน ds
        Dim ds As DataSet = New DataSet
        Dim st As String = "select MsID,MsName,SellPrice,UName from Medical_Supplies,Unit_Medicine where Gfor like '%" & lb_TypePet.Text & "%' and TypeCode = '" & cBox_SupType.SelectedValue.ToString & "' and UCode = UID "
        Dim strcon As String = "Data Source=LT-OCTOBERNO196\SQLEXPRESS;Initial Catalog=DogandCat;Integrated Security=True"
        Dim myCon As New SqlConnection(strcon)
        Dim myCommand As New SqlCommand(st, myCon)
        myCommand.Connection = myCon
        myCon.Open()
        Dim dataTable2 As DataTable = New DataTable
        da.SelectCommand = New SqlCommand(st, myCon)
        da.Fill(dataTable2)
        If (lb_TypePet.Text = "D") Then
            lb_TypePet.Text = "สุนัข"
        ElseIf (lb_TypePet.Text = "C") Then
            lb_TypePet.Text = "แมว"
        End If
        If (lb_Sex.Text = "F") Then
            lb_Sex.Text = "เมีย"
        ElseIf (lb_Sex.Text = "M") Then
            lb_Sex.Text = "ผู้"
        End If

        Return dataTable2
    End Function 'ข้อมูลยาเลือกตามประเภท


Code การเลือกค่าจาก Grid1 to Grid2

Code (VB.NET)
 Private Sub DataGrid_Ms_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGrid_Ms.CellMouseClick

        Dim k As Integer = 0
        For k = 0 To DataGrid_Prescription.Rows.Count - 1
            Dim temp_ID As String = ""
            temp_ID = DataGrid_Prescription.Rows(k).Cells(1).Value

            If temp_ID = Me.DataGrid_Ms.CurrentRow.Cells(0).Value Then
                MessageBox.Show("ข้อมูลที่ทำการเลือก ในขณะนี้ ได้ทำการเลือกไปแล้วค่ะ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                Exit Sub
            End If
        Next

        Grid_Presciption_Data.ImportRow(Grid_Ms_Data.Rows(e.RowIndex)) ' import ข้อมูลไปยัง datagird ของ TReated
        DataGrid_Prescription.DataSource = Grid_Presciption_Data
        Set_GridPrescription()
        Grid_Ms_Data.Rows(e.RowIndex).Delete() ' ลบ row ที่เลือกไป
        Grid_Ms_Data.AcceptChanges()
        DataGrid_Ms.DataSource = Grid_Ms_Data 'bind ข้อมูล
        Set_GridMs()


    End Sub


Grid2 back to Grid1

Code (VB.NET)
 Private Sub DataGrid_Prescription_CellMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGrid_Prescription.CellMouseDoubleClick

        Grid_Ms_Data.ImportRow(Grid_Presciption_Data.Rows(e.RowIndex))
        ' Grid_Ms_Data.DefaultView.Sort = "MsID"
        DataGrid_Ms.DataSource = Grid_Ms_Data
        ' DataGrid_Service.RowsDefaultCellStyle.WrapMode = True
        Set_GridMs()
        Grid_Presciption_Data.Rows(e.RowIndex).Delete()
        Grid_Presciption_Data.AcceptChanges()
        DataGrid_Prescription.DataSource = Grid_Presciption_Data
        '  DataGrid_Treated.RowsDefaultCellStyle.WrapMode = True
        Set_GridPrescription()

        Cal_Ms()
       End Sub


่ส่วนนี่เป็น Code ของ Grid3 ค่ะ

Code (VB.NET)
 Sub Get_Column_2GetNum()

        DataGrid_getNum.Columns.Add("Qms", "จำนวน")
        DataGrid_getNum.Columns.Add("ServID", "รหัส")

    End Sub

    Sub Get_Num()

        Get_Column_2GetNum()
        Dim r As Integer = DataGrid_getNum.Rows.Count() ' = 1 Header
        r = DataGrid_Prescription.Rows.Count()
        DataGrid_getNum.Rows.Add()
        DataGrid_getNum.Rows(r - 1).Cells(0).Value = DataGrid_Prescription.Rows(r - 1).Cells(0).Value
        DataGrid_getNum.Rows(r - 1).Cells(1).Value = DataGrid_Prescription.Rows(r - 1).Cells(1).Value


    End Sub


เรียกให้ Get_Num ทำงาน ค่ะ

Code (VB.NET)
    Private Sub DataGrid_Prescription_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGrid_Prescription.CellEndEdit

        Get_Num()
        Cal_Ms()

    End Sub ' กรอกจำนวนที่จ่าย แล้วทำการคำนวณค่ายา



รบกวนพี่ ๆ ด้วยนะคะ พี่ ๆ ทุกท่านช่วยได้มาก ๆ เลย

ขอบคุณมาก ๆ ค่า



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-02-10 17:26:15 By : Kwang196 View : 1502 Reply : 6
 

 

No. 1



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



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


ขอความกรุณาด้วยค่ะ ไม่มีเลยเหรอ T-T






Date : 2010-02-11 11:46:36 By : Kwang196
 


 

No. 2



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



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


พึ่งมาอ่าน แป๊ป นะน้อง
Grid2 back to Grid1

Private Sub DataGrid_Prescription_CellMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGrid_Prescription.CellMouseDoubleClick

Grid_Ms_Data.ImportRow(Grid_Presciption_Data.Rows(e.RowIndex))
' Grid_Ms_Data.DefaultView.Sort = "MsID"
DataGrid_Ms.DataSource = Grid_Ms_Data
' DataGrid_Service.RowsDefaultCellStyle.WrapMode = True
Set_GridMs()
Grid_Presciption_Data.Rows(e.RowIndex).Delete()
Grid_Presciption_Data.AcceptChanges()
DataGrid_Prescription.DataSource = Grid_Presciption_Data
' DataGrid_Treated.RowsDefaultCellStyle.WrapMode = True
Set_GridPrescription()
Cal_Ms()
End Sub

พี่สงสัยแค่ 2 method นี้แหล่ะครับ ว่าทำงานอย่างไร ที่พี่คิดได้(เดา)ได้ Set_GridPrescription() เป็น method ที่เข้าไปจัดการกับ datatable ที่ Grid2 ทำ biding อยู่ พี่ว่าน้องต้องเข้าไปแก้มันแน่ๆ เลย มันเลยทำให้ข้อมูลหายหมด ลองเอา method นี้มาดูครับ
--------------------------------------------------------------------------------------------------------------------------------
ดูจาก code แล้ว Grid3 ไม่มีก็ไม่เห็นจะจำเป็นเลย ไม่ใช้ก็ได้
Date : 2010-02-12 10:14:40 By : numenoy
 

 

No. 3



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



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


^_^ เพิ่งได้เข้ามาดู....ขอบคุณพี่ Numenoy มาก ๆ เลยค่ะ

จริง ๆ กวางทำได้แล้ว...นั่งงมอยู่เมื่อคืน...จนทำได้...มีปัญหาเล็ก ๆ น้อย ๆ แต่ถือว่า โอเคทำงานได้ ค่าจำนวนไม่หายแต่ก็บางครั้ง bug มันก็เกิด (กรณีที่กวางลองใส่จำนวนแล้วเอาข้อมูลออกซ้ำไปซ้ำมาอะค่ะ)

ส่วน Set_GridPrescription เป็นส่วนในการจัด Grid ค่ะ Code ค่ะ

Code (VB.NET)
Sub Set_GridPrescription()
       Dim cs As New DataGridViewCellStyle()
       cs.Font = New Font("Browallia New", 14)
       With DataGrid_Prescription
           .ColumnHeadersDefaultCellStyle = cs
           .Columns(0).HeaderText = "จำนวน" <------ เป็นการใส่จำนวน
           .Columns(0).HasDefaultCellStyle.GetType()
           .Columns(0).Width = 56%
           .Columns(0).Visible = True

           ' .Columns("MsID").DisplayIndex = 0 <------ อ้างถึง MsID ไม่ได้เพราะแทนด้วย จำนวนไปแล้ว 
           .Columns(1).HeaderText = "รหัส"
           .Columns(1).Width = 56%
           .Columns(1).Visible = False

           .Columns("MsName").DisplayIndex = 1
           .Columns(2).HeaderText = "ชื่อ"
           .Columns(2).Width = 205%
           .Columns(2).Visible = True

           .Columns("SellPrice").DisplayIndex = 2
           .Columns(3).HeaderText = "ราคา(บาท)"
           .Columns(3).Width = 100%
           .Columns(3).Visible = True

           .Columns("UName").DisplayIndex = 3
           .Columns(4).HeaderText = "หน่วย"
           .Columns(4).Width = 60%
           .Columns(4).Visible = True

       End With



และ

Code (VB.NET)
Private Sub Cal_Ms() 'คำนวณค่ายา

       Dim total As Integer
       For i As Integer = 0 To DataGrid_Prescription.RowCount - 1
           If (DataGrid_Prescription.Rows(i).Cells(0).Value) = "" Then
               MessageBox.Show("กรุณาใส่จำนวนที่ต้องจ่ายให้แก่ลูกค้าด้วยค่ะ !!")
               Exit Sub
           End If
           If (DataGrid_Prescription.Rows(i).Cells(0).Value) <> "" Then
               If Not IsNumeric(DataGrid_Prescription.Rows(i).Cells(0).Value) Then
                   MessageBox.Show("กรุณากรอกจำนวนตัวเลขด้วยครับ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Information)
                   Exit Sub
               End If
           End If
           total = total + (CDbl(DataGrid_Prescription.Rows(i).Cells(0).Value.ToString * DataGrid_Prescription.Rows(i).Cells(3).Value.ToString))
       Next
       MsAmount.Text = total.ToString

   End Sub 'คำนวณค่ายา




รบกวนด้วยนะคะ ขอบคุณมาก ๆ ค่ะ
Date : 2010-02-12 21:07:15 By : Kwang196
 


 

No. 4



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



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


รบกวนด้วยค่าา วิธีที่ทำไปมันยังมีปัญหา รบกวนด้วยนะคะ ขอบคุณมาก ๆ ค่า
Date : 2010-02-16 22:47:28 By : Kwang196
 


 

No. 5



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



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


น้องต้องถามใหม่แล้วละ พี่งงคำถามน้องไปแล้ว หึหึ
Date : 2010-02-17 14:29:10 By : numenoy
 


 

No. 6



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



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


งั้นกวางขอตั้งกระทู้ใหม่นะคะ
Date : 2010-02-17 15:10:26 By : Kwang196
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ขอรบกวนอีกแล้วค่ะ การดึงข้อมูลCellจาก Grid3 อันอื่นมายัง Grid2 ที่ทำการ Datatable กับ Grid1 ค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

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