Thursday, June 9, 2011

Import and Export Data from Excel File using Gridview


First How to Import Data from Excel File

  •  Create Excel file named Test.xlsx.
  •  In that Excel file give two columns named Id, Name.
  • Make some entries in that columns.
Now on the Page Load event (using System.Data.OleDb)

 protected void Page_Load(object sender, EventArgs e)
        {
            string FileName = Server.MapPath("Test.xlsx");
            DataSet ds=ImportExcel(FileName);
            GridView1.DataSource = ds;
            GridView1.DataBind();

        }

        public DataSet ImportExcel(string FileName)
        {
            string strSQL = "SELECT * FROM [Demo$]";
            OleDbConnection excelConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties='Excel 12.0;HDR=YES;'");
            excelConnection.Open();
            OleDbCommand dbCommand = new OleDbCommand(strSQL, excelConnection);
            OleDbDataAdapter dataAdapter = new OleDbDataAdapter(dbCommand);
            DataSet dsExcel = new DataSet();
            dataAdapter.Fill(dsExcel, "Demo");
            dataAdapter.Dispose();
            dbCommand.Dispose();
            excelConnection.Close();
            excelConnection.Dispose();
            return dsExcel;
        }


Now How to Export Data to Excel File From Gridview
(using System.Web)
 protected void Button1_Click(object sender, EventArgs e)
        {
            string filename = Server.MapPath("Test1.xlsx");

            HttpResponse response = HttpContext.Current.Response;

            // first let's clean up the response.object
            response.Clear();
            response.Charset = "";

            // set the response mime type for excel
            response.ContentType = "application/vnd.ms-excel";
            response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");

            // create a string writer
            using (StringWriter sw = new StringWriter())
            {
                using (HtmlTextWriter htw = new HtmlTextWriter(sw))
                {
                    // instantiate a datagrid
                  
                    GridView1.RenderControl(htw);
                    response.Write(sw.ToString());
                    response.End();
                }
            }
        }

If you run the code as above, it will result in an HttpException as follows:
Control 'GridView1' of type 'GridView' must be placed inside a form tag with runat=server." 
To avoid this error, add the following code:  
        
public override void VerifyRenderingInServerForm(Control control)
        {

        }


Monday, June 6, 2011

Add, Edit and Delete using Xml File in gridview

Step 1:  Design a page like as follows





















Step 2: Make Test.xml like as follows






















Step 3: on code behind


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Xml;


namespace XmlDemo
{
    public partial class XmlDemo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            #region -OnLoad-
            DataSet ds = new DataSet();
            ds.ReadXml(Server.MapPath("Test.xml"));
            Session["Dataset"] = ds;

            grdXMLDemo.DataSource = ds;
            grdXMLDemo.DataBind();
            #endregion
        }

        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            int status=Convert.ToInt32(lblStatus.Text);
            if (status==1)
            {
             
                InsertNewRecord();
             
            }
            else
            {
                UpdateRecords();
             
            }
         
        }

        #region -Update Record-
        public void UpdateRecords()
        {
            if (Session["Question_Id"] != null)
            {
                int Question_id = Convert.ToInt32(Session["Question_Id"]);
                DataSet dsEdits;
                dsEdits = (DataSet)Session["Dataset"];


                DataView dvEditsQuestion = dsEdits.Tables["Question"].DefaultView;
                dvEditsQuestion.RowFilter = "Question_Id=" + Question_id;
                dvEditsQuestion.AllowEdit = true;
                dvEditsQuestion[0].BeginEdit();
                dvEditsQuestion[0]["QName"] = txtQuestionName.Text;
                dvEditsQuestion[0]["Text"] = txtQuestion.Text;
                dvEditsQuestion[0]["QType"] = txtQuestionType.Text;
                dvEditsQuestion[0].EndEdit();


                DataView dvEditsOpt = dsEdits.Tables["Opt"].DefaultView;
                dvEditsOpt.RowFilter = "Optionlist_Id=" + Question_id;
                dvEditsOpt.AllowEdit = true;
                dvEditsOpt[0]["O1"] = txtOption1.Text;
                dvEditsOpt[0]["O2"] = txtOption2.Text;
                dvEditsOpt[0]["O3"] = txtOption3.Text;
                dvEditsOpt[0]["O4"] = txtOption4.Text;
                dvEditsOpt[0]["O5"] = txtOption5.Text;
                dvEditsOpt[0].EndEdit();

                dsEdits.AcceptChanges();
                Session["Dataset"] = dsEdits;
                dsEdits.WriteXml(Server.MapPath("Test.xml"));
                Response.Redirect("XMLDemo.aspx");
            }
        }
        #endregion

        #region -Add New Record-
        public void InsertNewRecord()
        {
            if (Session["Dataset"] != null)
            {
                DataSet dsAdd;
                dsAdd = (DataSet)Session["Dataset"];


                DataTable dtAddQuestion = new DataTable();
                dtAddQuestion = dsAdd.Tables["Question"];
                DataRow drAddQuestion = dtAddQuestion.NewRow();
                drAddQuestion["QName"] = txtQuestionName.Text;
                drAddQuestion["Text"] = txtQuestion.Text;
                drAddQuestion["QType"] = txtQuestionType.Text;
                dtAddQuestion.Rows.Add(drAddQuestion);

                int Question_Id = Convert.ToInt32(dsAdd.Tables["Question"].Compute("MAX(Question_Id)", ""));

                DataTable dtAddOptionlist = new DataTable();
                dtAddOptionlist = dsAdd.Tables["Optionlist"];
                DataRow drAddOptionlist = dtAddOptionlist.NewRow();
                drAddOptionlist["Optionlist_Id"] = Question_Id;
                drAddOptionlist["Question_Id"] = Question_Id;
                dtAddOptionlist.Rows.Add(drAddOptionlist);

                DataTable dtAddOpt = new DataTable();
                dtAddOpt = dsAdd.Tables["Opt"];
                DataRow drAddOpt = dtAddOpt.NewRow();
                drAddOpt["O1"] = txtOption1.Text;
                drAddOpt["O2"] = txtOption2.Text;
                drAddOpt["O3"] = txtOption3.Text;
                drAddOpt["O4"] = txtOption4.Text;
                drAddOpt["O5"] = txtOption5.Text;
                drAddOpt["Optionlist_Id"] = Question_Id;
                dtAddOpt.Rows.Add(drAddOpt);

                dsAdd.AcceptChanges();
                dsAdd.WriteXml(Server.MapPath("Test.xml"));
                Session["Dataset"] = dsAdd;
                Response.Redirect("XmlDemo.aspx");
            }
        }
        #endregion

        protected void grdXMLDemo_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int index = Convert.ToInt32(e.CommandArgument.ToString());
            int Question_Id = Convert.ToInt32(grdXMLDemo.DataKeys[index].Value);

            #region -Delete-
            if (e.CommandName.Equals("Deletes"))
            {
                if (Session["Dataset"] != null)
                {
                    DataSet dsDelete;
                    dsDelete = (DataSet)Session["Dataset"];

                    DataView dvDelete = new DataView();
                    dvDelete = dsDelete.Tables["Question"].DefaultView;
                    dvDelete.RowFilter = "Question_Id=" + Question_Id;
                    dvDelete.AllowDelete = true;
                    dvDelete[0].Delete();

                    dsDelete.AcceptChanges();
                    Session["Dataset"] = dsDelete;
                    dsDelete.WriteXml(Server.MapPath("Test.xml"));
                    Response.Redirect("XMLDemo.aspx");
                }
            }
            #endregion

            #region -Edit-
            if (e.CommandName.Equals("Edits"))
            {
                if (Session["Dataset"] != null)
                {
                    DataSet dsEdit;
                    dsEdit = (DataSet)Session["Dataset"];

                    DataView dvEditQuestion = new DataView();
                    dvEditQuestion = dsEdit.Tables["Question"].DefaultView;
                    dvEditQuestion.RowFilter = "Question_Id=" + Question_Id;
                    txtQuestionName.Text = dvEditQuestion[0].Row["QName"].ToString();
                    txtQuestion.Text = dvEditQuestion[0].Row["Text"].ToString();
                    txtQuestionType.Text = dvEditQuestion[0].Row["QType"].ToString();

                    DataView dvEditOpt=new DataView();
                    dvEditOpt = dsEdit.Tables["Opt"].DefaultView;
                    dvEditOpt.RowFilter = "Optionlist_Id=" + Question_Id;
                    txtOption1.Text = dvEditOpt[0].Row["O1"].ToString();
                    txtOption2.Text = dvEditOpt[0].Row["O2"].ToString();
                    txtOption3.Text = dvEditOpt[0].Row["O3"].ToString();
                    txtOption4.Text = dvEditOpt[0].Row["O4"].ToString();
                    txtOption5.Text = dvEditOpt[0].Row["O5"].ToString();
                    Session["Question_Id"] = Question_Id;
                    txtQuestionName.Enabled = false;
                    lblStatus.Text = "2";
                }
            }
            #endregion
        }

        protected void grdXMLDemo_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            e.Row.Cells[2].Visible = false;
        }

        protected void btnCancel_Click(object sender, EventArgs e)
        {
            #region -Cancel-
            txtQuestionName.Text = string.Empty;
            txtQuestion.Text = string.Empty;
            txtQuestionType.Text = string.Empty;
            txtOption1.Text = string.Empty;
            txtOption2.Text = string.Empty;
            txtOption3.Text = string.Empty;
            txtOption4.Text = string.Empty;
            txtOption5.Text = string.Empty;
            lblStatus.Text = "1";
            txtQuestionName.Enabled = true;
            #endregion
        }
    }
}