如何在VB.NET中填充DataGridView中的特定组合框选择另一个组合框中的另一个组合框
问题描述:
我是VB.NET的新手。如何在VB.NET中填充DataGridView中的特定组合框选择另一个组合框中的另一个组合框
我有一个Datagridview Datatable的数据源。它有两个Combobox。我正在使用下面的代码在VB.NET中基于另一个组合框的选择来填充datagridview中的特定组合框。
Private Sub DataGridView1_EditingControlShowing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
Dim cmb As ComboBox = TryCast(e.Control, ComboBox)
If DataGridView1.CurrentCell.ColumnIndex = 1 Then
If (cmb IsNot Nothing) Then
RemoveHandler cmb.SelectedIndexChanged, New EventHandler(AddressOf ComboBox_SelectedIndexChanged)
AddHandler cmb.SelectedIndexChanged, New EventHandler(AddressOf ComboBox_SelectedIndexChanged)
End If
End If
End Sub
Private Sub ComboBox_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
If DataGridView1.CurrentCell.ColumnIndex = 1 Then
Dim comboBox As ComboBox = CType(sender, ComboBox)
Dim cbCell As DataGridViewComboBoxCell = DirectCast(DataGridView1.Rows(DataGridView1.CurrentCell.RowIndex).Cells(2), DataGridViewComboBoxCell)
s = comboBox.Text
If String.Compare(s, "Driver") = 0 Then
cbCell.Items.Clear()
con.Open()
cmd = New SqlCommand("Select EmpName from EmployeeDetails where Status='Active' and Designation='Driver'", con)
dr = cmd.ExecuteReader()
While (dr.Read())
cbCell.Items.Add(dr("EmpName"))
End While
dr.Close()
cmd.Dispose()
con.Close()
End If
End If
End Sub
它的正常工作,但是当我接近的形式和repoen然后,我是wriiten下面的代码来填充datagridview的
Public Function view()
con.Open()
cmd = New SqlCommand("select SalaryDate,Type,EmpName,StDate,EnDate,Months,Days,ActualSalary,ReceivedSalary,Balance from LeaseDriverSalary where LeaseNo=" + sele.ToString, con)
da = New SqlDataAdapter(cmd)
dt = New DataTable()
da.Fill(dt)
Dim row As DataSet1.LeaseDriverSalary1Row
j = 1
For i = 0 To dt.Rows.Count - 1 Step 1
row = DataSet1.LeaseDriverSalary1.NewRow
DataSet1.LeaseDriverSalary1.Rows.Add(row)
row.SalaryDate = dt.Rows(i)(0)
row.Type = dt.Rows(i)(1).ToString
row.EmpName = dt.Rows(i)(2).ToString
row.StDate = dt.Rows(i)(3).ToString
row.EnDate = dt.Rows(i)(4).ToString
row.Months = Convert.ToInt64(dt.Rows(i)(5).ToString())
row.Days = Convert.ToInt64(dt.Rows(i)(6).ToString())
row.ActualSalary = Convert.ToInt64(dt.Rows(i)(7).ToString())
row.ReceivedSalary = Convert.ToInt64(dt.Rows(i)(8).ToString())
row.Balance = Convert.ToInt64(dt.Rows(i)(9).ToString())
Next
j = 0
cmd.Dispose()
con.Close()
Return 0
End Function
这里的第二个组合框不补基础上,第一个组合框。 任何建议都会有帮助。
答
当重新打开窗口时,会在第一个ComboBox上导致SelectedIndexChanged?把你的SelectedIndexChanged的代码放在函数'UpdateSecondComboBox'中,然后在你的SelectedIndexChanged处理函数和View()函数中调用它。
感谢文森特,我在窗体加载本身调用视图函数,那时它不会导致SelectedIndexChanged函数。 – 2012-07-11 11:56:55