DatagridView,Combobox显示格的问题.

answer_java 2008-09-11 09:33:36
DataGridView每一行里有一列为comboBoxColumn.

从数据库表里取出数据...
比如说
学生主表数据. 学生ID,学生,学生所在班级ID,学生其他人息....
班级表 班级ID,班级名称...

学生ID(Text) 学生姓名(Text) 学生所在班级(ComboBox) 学生其他信息(Text)

要求学生所在班在GRIDVIEW里显示为COMBOBOX...可以选择班级更改学生的所在班级..

实现的方法应该怎么做呢?
...全文
103 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
answer_java 2008-09-11
  • 打赏
  • 举报
回复
我现在的代码格式是这样的.
到红的地方就出错了.

INDEX超出范围?
answer_java 2008-09-11
  • 打赏
  • 举报
回复
Public Class Data
Protected clsCommon As einoCommon.Common ' use the einoCommon
Private ws As einoWS.einoWSSoapClient ' use the WebService

Private Sub Data_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
ws = New einoWS.einoWSSoapClient()
clsCommon = New einoCommon.Common()
Dim stSql As String
stSql = "SELECT ClassId,ClassNm FROM B"
Dim dtlData As DataTable
dtlData = ws.GetData(stSql).Tables(0) 'get produce dataset
Dim cell As New DataGridViewComboBoxCell
Dim col As New DataGridViewComboBoxColumn
Dim drw As DataRow
ComboBox1.Items.Clear()
For Each drw In dtlData.Rows
ComboBox1.Items.Add(New ComboItem(drw(1), drw(0)))
cell.Items.Add(New ComboItem(drw(1), drw(0)))
Next
ComboBox1.SelectedIndex = 0
col.CellTemplate = cell
'col.HeaderText = "ClassNm"
col.DataPropertyName = "ClassNm"
DataGridView1.Columns.Insert(DataGridView1.Columns("ClassNm").Index, col)
DataGridView1.Columns.Remove("ClassNm")
col.Name = "ClassNm"
cell.DisplayMember = "Caption"
cell.ValueMember = "Value"
'DataGridView1.Columns.Add(col)
Catch ex As Exception

End Try
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim stSql As String
Dim itRowIdx As Integer

Dim stStuId As String
Dim stStuNm As String
Dim stClassNm As String
Dim cell As New DataGridViewComboBoxCell
DataGridView1.Rows.Clear()
stSql = "SELECT A.StuId, A.StuNm, B.ClassNm,B.ClassId "
stSql &= "FROM "
stSql &= "A INNER JOIN B ON A.ClassId = B.ClassId "
stSql &= "Where B.ClassId = '" & CType(ComboBox1.SelectedItem, ComboItem).Value & "'"
Dim dtlData As DataTable
dtlData = ws.GetData(stSql).Tables(0) 'get UnionMember dataset

If dtlData.Rows.Count <> 0 Then
For itRowIdx = 0 To dtlData.Rows.Count - 1
stStuId = dtlData.Rows(itRowIdx)(0)
stStuNm = dtlData.Rows(itRowIdx)(1)
'stClassNm = dtlData.Rows(itRowIdx)(2)
'DataGridView1.Rows.Add(stStuId, stStuNm)
DataGridView1.Rows(itRowIdx).Cells(3).Value = dtlData.Rows(itRowIdx)(3).ToString
Next
End If
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim gdr As DataGridViewRow
Dim stId As String
For Each gdr In DataGridView1.Rows
stId = "Value:" & gdr.Cells(3).Value & vbCrLf
stId &= "Caption:" & gdr.Cells(3).FormattedValue
MessageBox.Show(stId)
Next
End Sub
End Class
YI_Yl 2008-09-11
  • 打赏
  • 举报
回复
把学生所在班这列设为combox
他的值指向Table还是Dataset,有点忘记了
对Table还是Dataset赋值就好了
lazyboysqaz 2008-09-11
  • 打赏
  • 举报
回复
GRIDVIEW中列属性有textbox 和combox,自定义列中

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧