Add the test inside your loop in your
exportSelectedRowsToExcel
method:
for (int i = 0; i < CategoryGV.Rows.Count - 1; i++)
{
var row = CategoryGV.Rows[i];
if (Convert.ToBoolean(row.Cells["chkBox"].Value))
{
for (int j = 0; j < CategoryGV.Columns.Count; j++)
{
worksheet.Cells[i + 2, j + 1] = Convert.ToString(row.Cells[j].Value);
}
}
}
Then change your event handler so that it only exports the rows once:
private void btnExportToExcel_Click(object sender, EventArgs e)
{
bool haveSelectedRows = false;
for (int i = 0; i < CategoryGV.Rows.Count; i++)
{
var row = CategoryGV.Rows[i];
if (Convert.ToBoolean(row.Cells["chkBox"].Value))
{
haveSelectedRows = true;
break;
}
}
if (haveSelectedRows)
{
exportSelectedRowsToExcel();
}
}