منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : DataGridViewComboBoX
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاتة 

انا لدي كود لتعبية داتاجريد فيو كمبوبوكس 
وشغال والحمد لله لكن 

ابغى المستخدم لما يختار من الكمبوبكس 
الحقول الاخرة تتعبة حسب الاختيار

وهذا كود تعبيئة الكمبوبوكس

كود :
   Sub getItemunits(ItemsID As String)
       Dim adp As New SqlClient.SqlDataAdapter("select * from TBLItems where ItemsID =N'" & ItemsID & "'", SqlConn)
       Dim ds As New DataSet
       adp.Fill(ds)
       Dim dt = ds.Tables(0)
       If dt.Rows.Count > 0 Then
           Dim DGV As DataGridViewComboBoxCell
           DGV = DGVK.Rows(DGVK.Rows.Count - 1).Cells(2)
           DGV.Items.Clear()
           DGV.Items.Add(dt.Rows(0).Item("ItemsUnit1"))
           If dt.Rows(0).Item("ItemsUnit2").ToString <> "" Then DGV.Items.Add(dt.Rows(0).Item("ItemsUnit2"))
           If dt.Rows(0).Item("ItemsUnit3").ToString <> "" Then DGV.Items.Add(dt.Rows(0).Item("ItemsUnit3"))
           DGVK.ClearSelection()
           DGVK.Rows(DGVK.Rows.Count - 1).Cells(2).Selected = True
       End If
   End Sub
وهذا التابل 

كود :
USE [Antaj]
GO

/****** Object:  Table [dbo].[TBLItems]    Script Date: 05/01/2019 14:29:57 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[TBLItems](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [ItemsID] [nvarchar](50) NULL,
    [ItemsName] [nvarchar](50) NULL,
    [ItemsBarcode] [int] NULL,
    [ItemsCategories] [nvarchar](50) NULL,
    [ItemsQTY] [int] NULL,
    [SuplersID] [int] NULL,
    [ItemsUnit1] [nvarchar](50) NULL,
    [ItemsUnit1QTY] [int] NULL,
    [ItemsUnit1PRICE] [decimal](18, 0) NULL,
    [ItemsUnit2] [nvarchar](50) NULL,
    [ItemsUnit2QTY] [int] NULL,
    [ItemsUnit2PRICE] [decimal](18, 0) NULL,
    [ItemsUnit3] [nvarchar](50) NULL,
    [ItemsUnit3QTY] [int] NULL,
    [ItemsUnit3PRICE] [decimal](18, 0) NULL,
    [ItemsCostprice] [decimal](18, 0) NULL,
    [ItemsSaleprice] [decimal](18, 0) NULL,
    [Itemsactive] [bit] NULL,
    [ItemsPhoto] [image] NULL,
    [PORK] [int] NULL,
CONSTRAINT [PK_TBLItems] PRIMARY KEY CLUSTERED
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

اتمنى احد يساعدني وولو بجملة IF الشرطية
مافيش اي رد يا جماعة
عزيزي  Smile

لم أفهم موضوعك  Sad 
اخي [b]saoud2 [/b]
[b]الموضوع كل مافية انه لدي عمود في الداتا جريد فيو من نوع كمبوبكس [/b]
[b]الكمبوبوكس هذا يتم تعبئته بوحدات الصنف الثلاث [/b]

[b]انا اريد لما اختار من الكمبوبوكس وحدة من الوحدات [/b]
[b]ياتي لي بالكمية وسعر الصنف لهذه الوحدة [/b]
[b]لان كل وحدة لها سعر وكمية [/b]
[b]مع العلم ان الوحدات وكمياتها واسعارها موجودة في نفس جدول الصنف [/b]
[b]اتمنى ان تكون وضحة الفكرة[/b]
عزيزي  Smile

هذا كود حدث الإختيار من كمبوبكس الداتاجريد من أساتذة المنتدى وستجد فيه مكان الاستعلام  Big Grin
كود :
   Private Sub editingComboBox_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
       Dim combo As ComboBox = TryCast(sender, ComboBox)
       If combo.Text IsNot Nothing Then
           ' الاستعلام
           Dim v = combo.Text
           Dim da As New SqlDataAdapter("SELECT * FROM [table] WHERE [column]=@c", SqlConn)
           da.SelectCommand.Parameters.AddWithValue("@c", v)
           Dim dt As New DataTable
           If da.Fill(dt) > 0 Then
               DataGridView1.CurrentRow.Cells(0).Value = dt.Rows(0)("unitPrice")
           End If
       End If
   End Sub
   Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
       Dim c = TryCast(e.Control, ComboBox)
       If c IsNot Nothing Then
           RemoveHandler c.SelectedIndexChanged, New EventHandler(AddressOf editingComboBox_SelectedIndexChanged)
           AddHandler c.SelectedIndexChanged, New EventHandler(AddressOf editingComboBox_SelectedIndexChanged)
       End If
   End Sub
قم بتعديل ما يلزمك  Smile
بارك الله فيك اخي لقد استعملت الكود وقد اتى نتيجة رائعة 

وللافادة الكود كامل بعد تعديل ما يلزمني 

كود :
   Private Sub editingComboBox_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
       Dim combo As ComboBox = TryCast(sender, ComboBox)
       If combo.Text IsNot Nothing Then
           ' الاستعلام
           If combo.SelectedIndex = 0 Then
               Dim v1 = combo.Text
               Dim da1 As New SqlClient.SqlDataAdapter("select * from TBLItems WHERE ItemsUnit1=@c1", SqlConn)
               da1.SelectCommand.Parameters.AddWithValue("@c1", v1)
               Dim dt1 As New DataTable
               If da1.Fill(dt1) > 0 Then
                   DGVK.CurrentRow.Cells(3).Value = dt1.Rows(0)("ItemsUnit1QTY")
                   DGVK.CurrentRow.Cells(4).Value = dt1.Rows(0)("ItemsUnit1PRICE")
               End If
           End If
           If combo.SelectedIndex = 1 Then
               Dim v1 = combo.Text
               Dim da1 As New SqlClient.SqlDataAdapter("select * from TBLItems WHERE ItemsUnit2=@c1", SqlConn)
               da1.SelectCommand.Parameters.AddWithValue("@c1", v1)
               Dim dt1 As New DataTable
               If da1.Fill(dt1) > 0 Then
                   DGVK.CurrentRow.Cells(3).Value = dt1.Rows(0)("ItemsUnit2QTY")
                   DGVK.CurrentRow.Cells(4).Value = dt1.Rows(0)("ItemsUnit2PRICE")
               End If
           End If
           If combo.SelectedIndex = 2 Then
               Dim v1 = combo.Text
               Dim da1 As New SqlClient.SqlDataAdapter("select * from TBLItems WHERE ItemsUnit3=@c1", SqlConn)
               da1.SelectCommand.Parameters.AddWithValue("@c1", v1)
               Dim dt1 As New DataTable
               If da1.Fill(dt1) > 0 Then
                   DGVK.CurrentRow.Cells(3).Value = dt1.Rows(0)("ItemsUnit3QTY")
                   DGVK.CurrentRow.Cells(4).Value = dt1.Rows(0)("ItemsUnit3PRICE")
               End If
           End If
       End If
   End Sub
   Private Sub DGVK_EditingControlShowing(ByVal sender As Object, ByVal e As DataGridViewEditingControlShowingEventArgs) Handles DGVK.EditingControlShowing
       Dim c = TryCast(e.Control, ComboBox)
       If c IsNot Nothing Then
           RemoveHandler c.SelectedIndexChanged, New EventHandler(AddressOf editingComboBox_SelectedIndexChanged)
           AddHandler c.SelectedIndexChanged, New EventHandler(AddressOf editingComboBox_SelectedIndexChanged)
       End If
   End Sub