Cree un informe RDLC dinámicamente en tiempo de ejecución desde un DataGridView

Tengo un formularioAdvancedSearchForm con unDataGridView controlardgrData y un botónReport en C # Winform. Al hacer clic en el botónReport, Deseo que un formulario con unReportView el control se mostrará con las mismas columnas que en DataGridView con los mismos encabezados de columna.

Formulario con DataGridView y botón

Salida esperada al hacer clic en el botón "Informe":

MiDatagridView (dgrData) El control está asociado con

SQL
“Select Id, c_Name from Country”
Cadena de conexión
server=localhost;User Id=root;password=root;Persist Security Info=True;database=country_state

Para cargar datos a la cuadrícula en tiempo de ejecución, preparo lo siguienteAdaptador de datos:

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;
}

¿Es posible llamar a un formulario secundario que contiene el predeterminadoreportero control, que muestra el informe con una tabla que contiene columnas correspondientes a la vista de cuadrícula de datos (dgrData) junto con datos dinámicamente en tiempo de ejecución?

Expectativa de salida en detalle:

Al hacer clic en el botón, el visor de informes en el formulario de destino debe obtener
asociado con el origen de datos de los valores en elDataGridView. Entonces elReportViewer control no sabe nada sobre los datos en el informe hasta que el usuario hace clic en el botón Informe en tiempo de ejecución.Deseo que la solución no requiera la creación de un archivo RDLC separado, ya que causa dependencia externa, para detener el flujo actual y crear un archivo de informe en un diseñador de archivos de informe que puede abrumar a los usuarios.No sé nada sobre el diseñador RDLC y la asociación de la fuente de datos (estoy dispuesto a aprender (^ _ ^), pero no puedo forzar este requisito de aprendizaje en mi equipo) y vincular los datos al informe. Le agradecería trabajar ejemplos de codificación, si su ayuda contiene teoría.Sé que ReportViewer ha existido desde hace bastante tiempo. Desearía que una solución de ejemplo para el mapeo de datos 1-1 entre la cuadrícula de datos y ReportViewer fuera más fácil de encontrar para alguien en el futuro en SO.

Nota: Avíseme si se requieren datos adicionales de mi parte en los comentarios. Para mostrar la solución actual, tuve que crear un archivo RDLC donde tuve que colocar tanto la cadena de conexión como el SQL en el momento del diseño, lo que deseo evitar en la solución que estoy buscando. Deseo encontrar una solución en la que el archivo RDLC se genere a través de algún código modular que pueda usarse también en otras soluciones, en lugar de tener que diseñarlo para cada formulario donde tengo DataGrids.

Respuestas a la pregunta(1)

Su respuesta a la pregunta