Criar relatório RDLC dinamicamente em tempo de execução a partir de um DataGridView

Eu tenho um formulárioAdvancedSearchForm com umDataGridView ao controledgrData e um botãoReport em C # Winform. Ao clicar no botãoReport, Desejo que um formulário com umReportView O controle seja mostrado com as mesmas colunas que no DataGridView com a mesma coluna Headers.

Formulário com DataGridView e Button

Saída esperada ao clicar no botão "Relatório":

MinhasDatagridView (dgrData) O controle está associado a

SQL
“Select Id, c_Name from Country”
ConnectionString
server=localhost;User Id=root;password=root;Persist Security Info=True;database=country_state

Para carregar dados na grade em tempo de execução, eu preparo o seguinteDataAdapter:

DataAdapter dataAdapter = DataAdapter.Current;
// I am passing the SQL statement and the table name to my database which knows the ConnectionString within the LoadData function

DataTable dt0 = dataAdapter.LoadData("select Id, c_Name from `country`", "country");
if (dt0 != null) {
   dgrData.DataSource = dt0;
}

É possível chamar um formulário filho contendo o padrãoreportviewer controle, que mostra o relatório com uma tabela contendo colunas correspondentes ao datagridview (dgrData) junto com dados dinamicamente em tempo de execução?

Expectativa de saída em detalhes:

Ao clicar no botão, o visualizador de relatórios no formulário de destino deve receber
associado ao dataSource a partir dos valores noDataGridView. Então oReportViewer O controle não sabe nada sobre os dados no relatório até o usuário clicar no botão Relatório no tempo de execução.Desejo que a solução não exija a criação de um arquivo RDLC separado, porque causa dependência externa, para interromper o fluxo atual e criar um arquivo de relatório em um designer de arquivo de relatório que possa estar sobrecarregando os usuários.Não sei nada sobre o designer de RDLC e a fonte de dados associada (estou disposto a aprender (^ _ ^), mas não posso forçar esse requisito de aprendizado em minha equipe) e vincular os dados ao relatório. Eu apreciaria trabalhar exemplos de codificação, se sua ajuda contiver teoria.Eu sei que o ReportViewer existe há bastante tempo. Gostaria que fosse mais fácil encontrar uma solução de exemplo para o mapeamento de dados 1-1 entre a grade de dados e o ReportViewer para alguém no futuro no SO.

Nota: Informe-me se houver algum dado adicional do meu lado nos comentários. Para mostrar a solução atual, tive que criar um arquivo RDLC em que tive que colocar a string de conexão e o SQL no tempo de design, o que desejo evitar na solução que estou procurando. Desejo encontrar uma solução em que o arquivo RDLC seja gerado por meio de algum código modular que também possa ser usado em outras soluções, em vez de ter que projetá-lo para cada formulário em que possuo DataGrids.

questionAnswers(1)

yourAnswerToTheQuestion