我有一个标签列表,其中每个标签都有自己的“x”数量的datagridviews。由于某种原因,第一个活动选项卡填充datagridviews就好了。当我单击选项卡控件中的第二个选项卡时,datagridviews将填充数据,但gridview显示为空 [当我按照代码显示填充到datagridview中的记录时] 。
如果我单击另一个选项卡然后再返回第二个选项卡,gridview将再次重新填充,然后显示数据。有谁知道可能导致这种情况的原因?它始终是第一次尝试,从来没有填充其他选项卡[除了第一个活动标签]
答案 0 :(得分:0)
所以从我所知道的...嵌套的Datagridviews无法使用myDataGrid.Rows.Add(.....)
在第一次加载时动态填充。我在第一次加载时能够做到这一点的唯一方法是构建一个Datatable并填充它。无法理解为什么但它有效....
With myDataGrid
Dim f As Font = .Font
.Columns.Clear()
.DataSource = Nothing
.DataMember = Nothing
.ColumnCount = 3
.AutoGenerateColumns = False
'.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells
.Columns(0).Name = "MsgID"
.Columns(0).HeaderText = "MsgID"
.Columns(0).DataPropertyName = "MsgID"
.Columns(0).Visible = False
.Columns(1).Name = "Message"
.Columns(1).HeaderText = "Message"
.Columns(1).DataPropertyName = "Message"
.Columns(2).Name = "Sig"
.Columns(2).HeaderText = "Sig"
.Columns(2).DataPropertyName = "Sig"
.Columns(1).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
.Font = New Font(f, FontStyle.Bold)
.DefaultCellStyle.Alignment = 1
.Refresh()
End With
Dim dt As New DataTable
dt.Columns.Add("MsgID")
dt.Columns.Add("Message")
dt.Columns.Add("Sig")
dt.Columns(0).AutoIncrement = True
With ArrMessages(x)
Dim R As DataRow = dt.NewRow
R(0) = .MsgID
R(1) = .Msgs
R(2) = .Sig
dt.Rows.Add(R)
End With
'assign sourcing
myDataGrid.DataSource = dt
myDataGrid.Refresh()
Me.myDataGrid.Parent.Refresh()
myDataGrid.Refresh()