Here i am Editing GridView and for Deleting i am deleting rows from DataTable then again binding it to GridView.
HTML:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Import Excel Data into GridView</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="btnUpload_Click" />
<br />
<asp:Label ID="Label1" runat="server" Text="Has Header ?"></asp:Label>
<asp:RadioButtonList ID="rbHDR" runat="server">
<asp:ListItem Text="Yes" Value="Yes" Selected="True"></asp:ListItem>
<asp:ListItem Text="No" Value="No"></asp:ListItem>
</asp:RadioButtonList>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
<asp:Button ID="btnUpdate" Text="Update" OnClick="Update" Visible="false" runat="server" />
<asp:GridView ID="GridView1" runat="server" OnPageIndexChanging="PageIndexChanging"
AllowPaging="true">
<Columns>
<asp:TemplateField HeaderText="Edit">
<ItemTemplate>
<asp:Button Text="Edit" OnClick="RowEdit" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Delete">
<ItemTemplate>
<asp:Button ID="Button1" Text="Delete" OnClick="RowDelete" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
C#:
protected void Page_Load(object sender, EventArgs e)
{
}
protected void RowDelete(object sender, EventArgs e)
{
GridViewRow row = ((sender as Button).NamingContainer as GridViewRow);
DataTable dt = (DataTable)ViewState["DataTable"];
dt.Rows.RemoveAt(row.RowIndex);
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
ViewState["DataTable"] = dt;
}
protected void Update(object sender, EventArgs e)
{
int rowIndex = Convert.ToInt32(ViewState["Index"]);
for (int i = 2; i < this.GridView1.Rows[0].Cells.Count; i++)
{
GridView1.Rows[rowIndex].Cells[i].Text = Request.Form["txtTextBox" + i.ToString()];
}
this.PlaceHolder1.Visible = false;
this.btnUpdate.Visible = false;
}
protected void RowEdit(object sender, EventArgs e)
{
GridViewRow row = ((sender as Button).NamingContainer as GridViewRow);
ViewState["Index"] = row.RowIndex;
int rowCellCount = row.Cells.Count;
Table tbl = new Table();
for (int i = 2; i < rowCellCount; i++)
{
TableRow tbRow = new TableRow();
TextBox textBox = new TextBox();
textBox.ID = "txtTextBox" + i.ToString();
textBox.Text = row.Cells[i].Text;
tbl.Rows.Add(tbRow);
TableCell tCell = new TableCell();
tCell.Controls.Add(textBox);
tbRow.Cells.Add(tCell);
}
PlaceHolder1.Controls.Add(tbl);
this.btnUpdate.Visible = true;
}
protected void btnUpload_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string FileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
string Extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
string FolderPath = ConfigurationManager.AppSettings["FolderPath"];
string FilePath = Server.MapPath(FolderPath + FileName);
FileUpload1.SaveAs(FilePath);
Import_To_Grid(FilePath, Extension, rbHDR.SelectedItem.Text);
}
}
private void Import_To_Grid(string FilePath, string Extension, string isHDR)
{
string conStr = "";
switch (Extension)
{
case ".xls": //Excel 97-03
conStr = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
break;
case ".xlsx": //Excel 07
conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
break;
}
conStr = String.Format(conStr, FilePath, isHDR);
OleDbConnection connExcel = new OleDbConnection(conStr);
OleDbCommand cmdExcel = new OleDbCommand();
OleDbDataAdapter oda = new OleDbDataAdapter();
DataTable dt = new DataTable();
cmdExcel.Connection = connExcel;
//Get the name of First Sheet
connExcel.Open();
DataTable dtExcelSchema;
dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
connExcel.Close();
//Read Data from First Sheet
connExcel.Open();
cmdExcel.CommandText = "SELECT * From [" + SheetName + "]";
oda.SelectCommand = cmdExcel;
oda.Fill(dt);
connExcel.Close();
//Bind Data to GridView
GridView1.Caption = Path.GetFileName(FilePath);
GridView1.DataSource = dt;
ViewState["DataTable"] = dt;
GridView1.DataBind();
}
protected void PageIndexChanging(object sender, GridViewPageEventArgs e)
{
string FolderPath = ConfigurationManager.AppSettings["FolderPath"];
string FileName = GridView1.Caption;
string Extension = Path.GetExtension(FileName);
string FilePath = Server.MapPath(FolderPath + FileName);
Import_To_Grid(FilePath, Extension, rbHDR.SelectedItem.Text);
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
}
Thank You.