In my gridview,the first 5 columns are filled with the values retrived from database on selecting an item dropdown.The last i.e, 6th column(date) is filled with value given in the textbox.
Now I need to export the gridview rows to Excel in which checkbox is checked.But Now With the code i have,Excel is containing the empty date column.Pls correct my code to get the proper filled Excel.
I have attached my code and screenshots..Thanks in advance
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
fillCollegeNames();
}
private void fillCollegeNames()
{
AdminDAL FillColgnames = new AdminDAL();
DataTable dtColgNames = FillColgnames.getCollegenames().Tables[0];
ddlColgName.DataSource = dtColgNames;
ddlColgName.DataTextField = "CollegeName";
ddlColgName.DataValueField = "CollegeId";
ddlColgName.DataBind();
ddlColgName.Items.Insert(0, "--Select--");
}
protected void ddlColgName_SelectedIndexChanged(object sender, EventArgs e)
{
BindGridData();
}
private void BindGridData()
{
try
{
if (ddlColgName.SelectedIndex > 0)
{
lblMsg.Visible = false;
AdminDAL VS = new AdminDAL();
VS.ColgName = Convert.ToString(ddlColgName.SelectedItem);
DataSet ds = VS.DetailsForAttendence();
if (ds.Tables[0].Rows.Count > 0)
{
gvStdntDetails.DataSource = ds.Tables[0];
gvStdntDetails.DataBind();
}
else
{
lblMsg.Visible = true;
lblMsg.ForeColor = System.Drawing.Color.Red;
lblMsg.Text = "No Students!!";
gvStdntDetails.DataSource = null;
gvStdntDetails.DataBind();
}
}
else
{
gvStdntDetails.DataSource = null;
gvStdntDetails.DataBind();
lblMsg.Visible = true;
lblMsg.ForeColor = System.Drawing.Color.Red;
lblMsg.Text = "Select College Name from List";
}
}
catch (Exception ex)
{
throw ex.InnerException;
}
}
protected void btnDate_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in gvStdntDetails.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
Label lblDate = (Label)row.FindControl("gvAttDate");
lblDate.Text = txtDate.Text;
}
}
}
public override void VerifyRenderingInServerForm(Control control)
{
/*Verifies that the control is rendered */
}
protected void gvStdntDetails_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
SaveCheckedValues();
gvStdntDetails.PageIndex = e.NewPageIndex;
BindGridData();
PopulateCheckedValues();
}
protected void btnExporttoExcel_Click(object sender, EventArgs e)
{
ExportFunction("attachment;filename=GridViewExport.xls", "application/vnd.ms-excel");
}
private void ExportFunction(string header, string contentType)
{
SaveCheckedValues();
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", header);
Response.Charset = "";
Response.ContentType = contentType;
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
gvStdntDetails.AllowPaging = false;
BindGridData();
gvStdntDetails.HeaderRow.Style.Add("background-color", "#FFFFFF");
gvStdntDetails.HeaderRow.Cells[0].Visible = false;
for (int i = 0; i < gvStdntDetails.HeaderRow.Cells.Count; i++)
{
gvStdntDetails.HeaderRow.Cells[i].Style.Add("background-color", "#df5015");
gvStdntDetails.HeaderRow.Cells[i].Style.Add("color", "#FFFFFF");
}
if (ViewState["CHECKED_ITEMS"] != null)
{
ArrayList CheckBoxArray = (ArrayList)ViewState["CHECKED_ITEMS"];
int rowIdx = 0;
for (int i = 0; i < gvStdntDetails.Rows.Count; i++)
{
GridViewRow row = gvStdntDetails.Rows[i];
row.Visible = false;
int index = (int)gvStdntDetails.DataKeys[row.RowIndex].Value;
if (CheckBoxArray.Contains(index))
{
row.Visible = true;
row.Cells[0].Visible = false;
}
}
}
gvStdntDetails.RenderControl(hw);
Response.Output.Write(sw.ToString());
Response.End();
}
private void SaveCheckedValues()
{
ArrayList userdetails = new ArrayList();
int index = -1;
foreach (GridViewRow gvrow in gvStdntDetails.Rows)
{
index = (int)gvStdntDetails.DataKeys[gvrow.RowIndex].Value;
bool result = ((CheckBox)gvrow.FindControl("CheckBox1")).Checked;
// Check in the Session
if (ViewState["CHECKED_ITEMS"] != null)
userdetails = (ArrayList)ViewState["CHECKED_ITEMS"];
if (result)
{
if (!userdetails.Contains(index))
userdetails.Add(index);
}
else
userdetails.Remove(index);
}
if (userdetails != null && userdetails.Count > 0)
ViewState["CHECKED_ITEMS"] = userdetails;
}
private void PopulateCheckedValues()
{
ArrayList userdetails = (ArrayList)ViewState["CHECKED_ITEMS"];
if (userdetails != null && userdetails.Count > 0)
{
foreach (GridViewRow gvrow in gvStdntDetails.Rows)
{
int index = (int)gvStdntDetails.DataKeys[gvrow.RowIndex].Value;
if (userdetails.Contains(index))
{
CheckBox myCheckBox = (CheckBox)gvrow.FindControl("CheckBox1");
myCheckBox.Checked = true;
}
}
}
}