Hi sujayanand,
I have created sample code by referring the below article which full-fill your requirement.
C#
Form1
public partial class Form1 : Form
{
private const string ConnectionString = @"Data Source=.\SQL2005;Initial Catalog=Test;uid=sa;pwd=pass@123";
public Form1()
{
InitializeComponent();
this.BindGrid();
}
private void BindGrid()
{
using (SqlConnection con = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand("SELECT CustomerId, Name, Country FROM Customers", con))
{
cmd.CommandType = CommandType.Text;
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
dataGridView1.DataSource = dt;
}
}
}
}
DataGridViewCheckBoxColumn checkBoxColumn = new DataGridViewCheckBoxColumn();
checkBoxColumn.HeaderText = "";
checkBoxColumn.Width = 30;
checkBoxColumn.Name = "checkBoxColumn";
dataGridView1.Columns.Insert(0, checkBoxColumn);
}
private void button1_Click(object sender, EventArgs e)
{
List<DataGridViewRow> selectedRows = (from row in dataGridView1.Rows.Cast<DataGridViewRow>()
where Convert.ToBoolean(row.Cells["checkBoxColumn"].Value) == true
select row).ToList();
RdlcReportForm f = new RdlcReportForm(selectedRows);
f.ShowDialog();
}
}
RdlcReportForm
public partial class RdlcReportForm : Form
{
public RdlcReportForm(List<DataGridViewRow> selectedRow)
{
InitializeComponent();
DataTable dt = new DataTable("DataTable1");
dt.Columns.AddRange(new DataColumn[3] {
new DataColumn("CustomerId", typeof(string)), new DataColumn("Name", typeof(string)), new DataColumn("Country", typeof(string)) });
foreach (DataGridViewRow row in selectedRow)
{
dt.Rows.Add(row.Cells["CustomerId"].Value, row.Cells["Name"].Value, row.Cells["Country"].Value);
}
Customers dsCustomers = new Customers();
dsCustomers.Merge(dt);
ReportDataSource datasource = new ReportDataSource("Customers", dsCustomers.Tables[0]);
this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(datasource);
this.reportViewer1.RefreshReport();
}
private void RdlcReportForm_Load(object sender, EventArgs e)
{
this.reportViewer1.RefreshReport();
}
}
Vb.Net
Form1
Public Partial Class Form1
Inherits Form
Private Const ConnectionString As String = "Data Source=.\SQL2005;Initial Catalog=Test;uid=sa;pwd=pass@123"
Public Sub New()
InitializeComponent()
Me.BindGrid()
End Sub
Private Sub BindGrid()
Using con As New SqlConnection(ConnectionString)
Using cmd As New SqlCommand("SELECT CustomerId, Name, Country FROM Customers", con)
cmd.CommandType = CommandType.Text
Using sda As New SqlDataAdapter(cmd)
Using dt As New DataTable()
sda.Fill(dt)
dataGridView1.DataSource = dt
End Using
End Using
End Using
End Using
Dim checkBoxColumn As New DataGridViewCheckBoxColumn()
checkBoxColumn.HeaderText = ""
checkBoxColumn.Width = 30
checkBoxColumn.Name = "checkBoxColumn"
dataGridView1.Columns.Insert(0, checkBoxColumn)
End Sub
Private Sub button1_Click(sender As Object, e As EventArgs)
Dim selectedRows As List(Of DataGridViewRow) = (From row In dataGridView1.Rows.Cast(Of DataGridViewRow)() Where Convert.ToBoolean(row.Cells("checkBoxColumn").Value) = Truerow).ToList()
Dim f As New RdlcReportForm(selectedRows)
f.ShowDialog()
End Sub
End Class
RdlcReportForm
Public Partial Class RdlcReportForm
Inherits Form
Public Sub New(selectedRow As List(Of DataGridViewRow))
InitializeComponent()
Dim dt As New DataTable("DataTable1")
dt.Columns.AddRange(New DataColumn(2) {New DataColumn("CustomerId", GetType(String)), New DataColumn("Name", GetType(String)), New DataColumn("Country", GetType(String))})
For Each row As DataGridViewRow In selectedRow
dt.Rows.Add(row.Cells("CustomerId").Value, row.Cells("Name").Value, row.Cells("Country").Value)
Next
Dim dsCustomers As New Customers()
dsCustomers.Merge(dt)
Dim datasource As New ReportDataSource("Customers", dsCustomers.Tables(0))
Me.reportViewer1.LocalReport.DataSources.Clear()
Me.reportViewer1.LocalReport.DataSources.Add(datasource)
Me.reportViewer1.RefreshReport()
End Sub
Private Sub RdlcReportForm_Load(sender As Object, e As EventArgs)
Me.reportViewer1.RefreshReport()
End Sub
End Class
Screenshot
