这两天在开发一个应用程序。大致的思路是:先根据用户创建的的数据生成一个dataset,然后将此dataset绑定到datagrid并显示,用户在此过程中可以重新生成数据,还可以修改已经生成的数据,操作完成后会及时的反映在datagrid中。最后通过dataadapter将数据保存到数据库中。
程序第一次运行时一切正常(第一次绑定正常),在后续操作中就出现了问题,datagrid中无法显示dataset中的数据。通过调试发现生成的dataset里有数据,问题出在绑定语句中。我将代码贴出来,希望各位高手帮我解决!!谢谢!!
Public Sub show_grid()
Dim myds As New DataSet
Dim mydt As New DataTable
Dim mydc As New DataColumn
Dim i, count As Integer
'//////////////////////////////////////////////
'依据选出的试题编号以及题目生成一个dataset
'将此dataset绑定到datagrid上显示
Try
myds.Clear()
'myds.Reset()
mydt.Clear()
'mydt.Reset()
mydt = New DataTable("temp_tb")
mydc = New DataColumn("th", System.Type.GetType("System.Int32"))
mydc.ReadOnly = True
mydt.Columns.Add(mydc)
mydc = New DataColumn("tm", System.Type.GetType("System.String"))
mydc.ReadOnly = True
mydt.Columns.Add(mydc)
mydc = New DataColumn("stfs", System.Type.GetType("System.Decimal"))
mydt.Columns.Add(mydc)
'生成datarow,并将其添加到datatable
Dim dr = mydt.NewRow()
For i = 0 To all_th.Count - 1
dr("th") = all_th(i)
dr("tm") = encrypt.Decrypt(get_stnr(all_th(i)))
dr("stfs") = 0
mydt.Rows.Add(dr)
Next
myds.Tables.Add(mydt) '将datatable绑定到dataset
'///////出问题的地方
datagrid_st.SetDataBinding(myds, "temp_tb")
'datagrid_st.DataSource = myds '设置datagrid的数据源(此处为dataset)
'datagrid_st.DataMember = "temp_tb"
'///////////////////////////////////////
'设置datagrid的外观样式(, 这里主要设置其表头)
Dim dgts As New DataGridTableStyle
dgts.MappingName = "temp_tb"
Dim objTextCol As New DataGridTextBoxColumn
objTextCol.MappingName = "th"
objTextCol.HeaderText = "题号"
dgts.GridColumnStyles.Add(objTextCol)
objTextCol = New DataGridTextBoxColumn
objTextCol.MappingName = "tm"
objTextCol.HeaderText = "试题内容"
dgts.GridColumnStyles.Add(objTextCol)
objTextCol = New DataGridTextBoxColumn
objTextCol.MappingName = "stfs"
objTextCol.HeaderText = "试题分数"
dgts.GridColumnStyles.Add(objTextCol)
datagrid1.TableStyles.Clear()
datagrid1.TableStyles.Add(dgts)
Catch ex As Exception
Debug.WriteLine(ex.Message.ToString())
End Try
End Sub