如何在Datagrid中的第一列输入货品的编码按回车后,自动在对应的行中显示其他信息
如何在Datagrid中的第一列输入货品的编码,按回车后,自动在其所在的行中显示其他信息如:货品价格,单位、类型等??????
我没分了,还请大家帮个忙
问题点数:20、回复次数:2Top
1 楼jsfeiyu(jszquan)回复于 2005-05-05 08:40:51 得分 20
Private Sub gridboxpartout(ByVal sender As Object, ByVal e As System.EventArgs)
If opcode <> 1 Then Exit Sub
Dim strsql As String
Dim ds As New DataSet
Dim i As Integer
Try
If Trim(Me.Datagrid1.Item(Me.Datagrid1.CurrentRowIndex, 1)) <> "" Then
strsql = "select * from partitem_m where part_no='" & Trim(Me.Datagrid1.Item(Me.Datagrid1.CurrentRowIndex, 1)) & "'"
Dim da As New SqlClient.SqlDataAdapter(strsql, connstr)
da.Fill(ds)
If ds.Tables(0).Rows.Count > 0 Then
Me.txtname.Text = ds.Tables(0).Rows(0).Item("part_name")
Me.txtdesc.Text = ds.Tables(0).Rows(0).Item("part_desc")
Else
Me.txtname.Text = "新物料"
Me.txtdesc.Text = "新说明"
End If
ds.Clear()
sqlstring = "select isnull(debt_no,'') as debt_no,isnull(part_no,'') as part_no,isnull(debt_qty,0) as debt_qty,isnull(lot_no,'') as lot_no,isnull(set_qty,0) as set_qty,out_date,manuf_NO,prod_no,UNIT_QTY,io_code,dept_no,order_no,id " & _
"from partout_t where part_no='" & Trim(Me.Datagrid1.Item(Me.Datagrid1.CurrentRowIndex, 1)) & "'and debt_qty>0 order by out_date"
dt_de.Clear()
Dim dade As New SqlClient.SqlDataAdapter(sqlstring, connstr)
dade.Fill(dt_de)
dv_de = dt_de.DefaultView
curid = Me.Datagrid1.CurrentRowIndex
If Me.Check1.Checked = True Then
Else
strsql = "SELECT top 1 debt_no from partout_t where part_no = '" & Trim(Me.Datagrid1.Item(Me.Datagrid1.CurrentRowIndex, 1)) & "' and debt_qty>0 "
Dim da1 As New SqlClient.SqlDataAdapter(strsql, connstr)
da1.Fill(ds)
If ds.Tables(0).Rows.Count > 0 Then
MsgBox("该物料欠料!!!", MsgBoxStyle.OKOnly, "提示")
End If
ds.Clear()
End If
Me.txtdebt1_no.Items.Clear()
For i = 0 To dt_de.Rows.Count - 1
Try
Me.txtdebt1_no.Items.Add(dt_de.Rows(i).Item(0) + "|" + Microsoft.VisualBasic.Left(dt_de.Rows(i).Item(1) + " ", 10) + "|" + Microsoft.VisualBasic.Left(Str(dt_de.Rows(i).Item(2)) + Space(10), 10) + "|" + Microsoft.VisualBasic.Left(dt_de.Rows(i).Item(3) + Space(10), 10) + "|" + Microsoft.VisualBasic.Left(Str(dt_de.Rows(i).Item(4)) + Space(10), 10) + "|" + Microsoft.VisualBasic.Left(CStr(dt_de.Rows(i).Item(5)) + Space(10), 10))
Catch ex As Exception
MsgBox(ex.Message)
End Try
Next
strsql = "select loct_no,stock_qty,unit from partstock_d where part_no= '" & Trim(Me.Datagrid1.Item(Me.Datagrid1.CurrentRowIndex, 1)) & "'"
Dim da2 As New SqlClient.SqlDataAdapter(strsql, connstr)
ds.Clear()
da2.Fill(ds)
If ds.Tables(0).Rows.Count > 0 Then
Me.Datagrid1.Item(Me.Datagrid1.CurrentRowIndex, 2) = ds.Tables(0).Rows(0).Item("loct_no")
Me.Datagrid1.Item(Me.Datagrid1.CurrentRowIndex, 3) = ds.Tables(0).Rows(0).Item("stock_qty")
Me.Datagrid1.Item(Me.Datagrid1.CurrentRowIndex, 6) = ds.Tables(0).Rows(0).Item("unit")
If Trim(Me.Datagrid1.Item(Me.Datagrid1.CurrentRowIndex, 7)) = "" Then
Me.Datagrid1.Item(Me.Datagrid1.CurrentRowIndex, 7) = "04"
End If
dt.AcceptChanges()
End If
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub initgrid()
Dim gtype As New DataGridTableStyle
gtype.AllowSorting = False
gtype.MappingName = dt.TableName
Dim dc As New DataGridTextBoxColumn
dc.MappingName = "id"
dc.HeaderText = "序号"
dc.ReadOnly = True
dc.Width = 30
gtype.GridColumnStyles.Add(dc)
Dim dc1 As New DataGridTextBoxColumn
AddHandler dc1.TextBox.Validated, New EventHandler(AddressOf gridboxpartout)
dc1.MappingName = "part_no"
dc1.HeaderText = "Part_no"
dc1.Width = 70
dc1.Alignment = HorizontalAlignment.Center
gtype.GridColumnStyles.Add(dc1)
Dim dc2 As New DataGridTextBoxColumn
dc2.MappingName = "loct_no"
dc2.HeaderText = "库位"
dc2.Width = 70
dc2.ReadOnly = True
dc2.TextBox.Enabled = False
dc2.Alignment = HorizontalAlignment.Center
gtype.GridColumnStyles.Add(dc2)
Dim dc3 As New DataGridTextBoxColumn
dc3.MappingName = "stockqty"
dc3.HeaderText = "当时库存"
dc3.Width = 100
dc3.Format = "0.00"
dc3.ReadOnly = True
dc3.TextBox.Enabled = False
dc3.Alignment = HorizontalAlignment.Center
gtype.GridColumnStyles.Add(dc3)
Dim dc4 As New DataGridTextBoxColumn
AddHandler dc4.TextBox.Validated, New EventHandler(AddressOf gridboxunit)
dc4.MappingName = "unit_qty"
dc4.HeaderText = "单位用量"
dc4.Alignment = HorizontalAlignment.Center
dc4.Width = 80
gtype.GridColumnStyles.Add(dc4)
Dim dc5 As New DataGridTextBoxColumn
dc5.MappingName = "out_qty"
dc5.HeaderText = "出库数量"
dc5.Width = 100
dc5.Format = "0.00"
dc5.Alignment = HorizontalAlignment.Center
gtype.GridColumnStyles.Add(dc5)
Dim dc6 As New DataGridTextBoxColumn
dc6.MappingName = "unit"
dc6.HeaderText = "单位"
dc6.Width = 50
dc6.Alignment = HorizontalAlignment.Center
gtype.GridColumnStyles.Add(dc6)
Dim dc7 As New DataGridTextBoxColumn
dc7.MappingName = "io_code"
dc7.HeaderText = "原因"
dc7.Width = 100
gtype.GridColumnStyles.Add(dc7)
dc7.Alignment = HorizontalAlignment.Center
Dim dc8 As New DataGridTextBoxColumn
dc8.MappingName = "manuf_no"
dc8.HeaderText = "生产/退料单号"
dc8.Width = 100
dc8.Alignment = HorizontalAlignment.Center
gtype.GridColumnStyles.Add(dc8)
Dim dc9 As New DataGridTextBoxColumn
dc9.MappingName = "debt_no"
dc9.HeaderText = "欠料单号"
dc9.Width = 100
gtype.GridColumnStyles.Add(dc9)
dc9.Alignment = HorizontalAlignment.Center
Dim dc10 As New DataGridTextBoxColumn
dc10.MappingName = "debt_qty"
dc10.HeaderText = "欠料数量"
dc10.Format = "0.00"
dc10.Width = 100
dc10.Alignment = HorizontalAlignment.Center
gtype.GridColumnStyles.Add(dc10)
gtype.AlternatingBackColor = Color.Lavender
gtype.BackColor = Color.WhiteSmoke
gtype.GridLineColor = Color.Gainsboro
gtype.ForeColor = Color.MidnightBlue
gtype.HeaderForeColor = Color.White
gtype.HeaderBackColor = Color.RoyalBlue
gtype.SelectionBackColor = Color.CadetBlue
gtype.SelectionForeColor = Color.WhiteSmoke
Me.Datagrid1.TableStyles.Add(gtype)
End SubTop
2 楼jsfeiyu(jszquan)回复于 2005-05-05 08:41:54 得分 0
这个方法百试不爽!!!Top




