ASP.NET DataSet丢失数据?

时间:2012-02-14 13:52:25

标签: asp.net vb.net

以下代码动态地将选项卡添加到选项卡控件。在每行数据表中,它调用一个函数 CarregaAvaliacoes ,为每个选项卡添加一些控件。数据集dtGruposCompetencias有4行。但是,在第一行(调用CarregaAvaliacoes之后)之后,它会丢失数据(IndexOutOfRangeException)。任何想法?

编辑:我已经调试过它,然后是每一步。在第一次完成CarregaAvaliacoes之后,数据集不再有数据。不明白为什么。

谢谢!

Dim dtGruposCompetencias As New DataTable
Dim nivel As Integer = 4

dtGruposCompetencias = dal.CarregaAvaliacoesPorNivel(nivel)
lblTemp.Text = dtGruposCompetencias.Rows.Count

If dtGruposCompetencias.Rows.Count > 0 Then
    Dim tb As AjaxControlToolkit.TabPanel
    For i As Integer = 0 To dtGruposCompetencias.Rows.Count - 1
        tb = New AjaxControlToolkit.TabPanel
        tb.HeaderText = dtGruposCompetencias.Rows(i)("designacao").ToString()
        Dim grupo As String = dtGruposCompetencias.Rows(i)("idGrupoCompetencia").ToString()
        CarregaAvaliacoes(tb, grupo)
    Next
    tabAvaliacoes.ActiveTabIndex = 0
Else
    lblSemAvaliacoes.Visible = True
End If


Public Sub CarregaAvaliacoes(tab As AjaxControlToolkit.TabPanel, idGrupoCompetencia As String)
        Dim dtAtributos As New DataTable
        dtAtributos = dal.CarregaAtributosAvaliacao(idGrupoCompetencia)

        If dtAtributos.Rows.Count > 0 Then
            Dim tdCompetencia As TableCell, tdAtributo As TableCell
            Dim tr As TableRow
            Dim tblAvaliacao As New Table
            For i As Integer = 0 To dtAtributos.Rows.Count - 1
                tdCompetencia = New TableCell
                tdCompetencia.Controls.Add(fRetTexto(dtAtributos.Rows(i)("competencia").ToString()))
                tdAtributo = New TableCell
                tdAtributo.Controls.Add(fRetTexto(dtAtributos.Rows(i)("atributo").ToString()))

                tr = New TableRow
                tr.Cells.Add(tdCompetencia)
                tr.Cells.Add(tdAtributo)

                tblAvaliacao = New Table
                tblAvaliacao.Rows.Add(tr)
            Next
            tab.Controls.Add(tblAvaliacao)
        Else
            Dim lblSemRegistos As New Label
            lblSemRegistos.Text = "Sem dados para avaliação."
            tab.Controls.Add(lblSemAvaliacoes)
        End If
    End Sub

0 个答案:

没有答案