Code:    
Protected Function getDataSource(ByVal id As String) As DataTable
        Dim DT As DataTable
        Dim DR As DataRow
        DT = New DataTable("DT")
        DT.Columns.Add("key", GetType(String))
        DT.Columns.Add("value", GetType(String))        DR = DT.NewRow
        Dim strSQL As String = GetSqlString(id)
        If conn.State <> ConnectionState.Open Then conn.Open()
        Dim sqlDBcmd As SqlCommand = New SqlCommand
        sqlDBcmd.Connection = conn
        sqlDBcmd.CommandText = strSQL
        Dim DBreader As SqlDataReader = sqlDBcmd.ExecuteReader()
        While DBreader.Read()
            DR(0) = DBreader.Item(0)
            DR(1) = DBreader.Item(1)
            DT.Rows.Add(DR)
        End While
        DBreader.Close()
        'conn.Close()
        Return DT
        DT.Dispose()
    End Function

解决方案 »

  1.   

    出错信息:這個資料列已經屬於這個資料表。 
    描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。 例外詳細資訊: System.ArgumentException: 這個資料列已經屬於這個資料表。原始程式錯誤: 
    行 202:            DR(0) = DBreader.Item(0)
    行 203:            DR(1) = DBreader.Item(1)
    行 204:            DT.Rows.Add(DR)
    行 205:            End While
    行 206:           DBreader.Close()
     
      

  2.   

    While DBreader.Read()
                DR(0) = DBreader.Item(0)
                DR(1) = DBreader.Item(1)
                DT.Rows.Add(DR)
                DR=DT.NewRow   //here
            End While
      

  3.   

    wacle([Smile!]) 高手果然慧眼识bug,搞定了,谢!!马上给分