Dynamically Add and Delete row in GridView
.aspx code-----------
<div>
<asp:GridView ID="gvBooks" runat="server" ShowFooter="True"
AutoGenerateColumns="False" HeaderStyle-CssClass="header-column" onrowcommand="gvBooks_RowCommand"
onrowdatabound="gvBooks_RowDataBound" BorderStyle="None" GridLines="None">
<Columns>
<asp:TemplateField HeaderText="Book Name">
<ItemTemplate>
<asp:TextBox ID="txtBookName" runat="server">
</asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:LinkButton ID="lbNewBook" runat="server" CausesValidation="false" CommandName="NewBook">New</asp:LinkButton>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Author">
<ItemTemplate>
<asp:TextBox ID="txtAuthor" runat="server" Text='<%#Bind("Author") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Description">
<ItemTemplate>
<asp:TextBox ID="txtDescription" runat="server" Text='<%#Bind("Description") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Genre">
<ItemTemplate>
<asp:DropDownList ID="ddlGenre" runat="server" AppendDataBoundItems="true">
<asp:ListItem>Choose...</asp:ListItem>
<asp:ListItem>Computer</asp:ListItem>
<asp:ListItem>Fantasy</asp:ListItem>
<asp:ListItem>Horror</asp:ListItem>
<asp:ListItem>Comedy</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Price">
<ItemTemplate>
<asp:TextBox ID="txtPercentage" runat="server" Width="100px" Text='<%#Bind("Price") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Publish Date">
<ItemTemplate>
<asp:TextBox ID="txtPublishDate" runat="server" Width="100px" Text='<%#Bind("PublishDate") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imgbtnDeleteBook" runat="server" CausesValidation="false" ImageUrl="~/App_Themes/Red/Images/cross.png" CommandName="DeleteBook" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
.cs code
public partial class Default6 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
AddBookDefault();
}
}
private void AddBookDefault()
{
DataTable dt = new DataTable();
DataRow dr = null;
dt.Columns.Add(new DataColumn("BookName", typeof(string)));
dt.Columns.Add(new DataColumn("Author", typeof(string)));
dt.Columns.Add(new DataColumn("Description", typeof(string)));
dt.Columns.Add(new DataColumn("Genre", typeof(string)));
dt.Columns.Add(new DataColumn("Price", typeof(string)));
dt.Columns.Add(new DataColumn("PublishDate", typeof(string)));
dr = dt.NewRow();
dr["BookName"] = string.Empty;
dr["Author"] = string.Empty;
dr["Description"] = string.Empty;
dr["Genre"] = string.Empty;
dr["Price"] = string.Empty;
dr["PublishDate"] = string.Empty;
dt.Rows.Add(dr);
//dr = dt.NewRow();
//Store the DataTable in ViewState
ViewState["CurrentTable"] = dt;
gvBooks.DataSource = dt;
gvBooks.DataBind();
}
protected void gvBooks_RowCommand(object sender, GridViewCommandEventArgs e)
{
int rowIndex = 0;
DataTable dt = (DataTable)ViewState["CurrentTable"];
if (e.CommandName == "NewBook")
{
DataRow rw = dt.NewRow();
dt.Rows.Add(rw);
//Set Previous Data
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count - 1; i++)
{
TextBox txtBookName = (TextBox)gvBooks.Rows[rowIndex].Cells[0].FindControl("txtBookName");
TextBox txtAuthor = (TextBox)gvBooks.Rows[rowIndex].Cells[1].FindControl("txtAuthor");
TextBox txtDescription = (TextBox)gvBooks.Rows[rowIndex].Cells[2].FindControl("txtDescription");
DropDownList ddlGenre = (DropDownList)gvBooks.Rows[rowIndex].Cells[3].FindControl("ddlGenre");
TextBox txtPrice = (TextBox)gvBooks.Rows[rowIndex].Cells[4].FindControl("txtPercentage");
TextBox txtPublishDate = (TextBox)gvBooks.Rows[rowIndex].Cells[5].FindControl("txtPublishDate");
dt.Rows[i]["BookName"] = txtBookName.Text;
dt.Rows[i]["Author"] = txtAuthor.Text;
dt.Rows[i]["Description"] = txtDescription.Text;
dt.Rows[i]["Genre"] = ddlGenre.SelectedItem.Text;
dt.Rows[i]["Price"] = txtPrice.Text;
dt.Rows[i]["PublishDate"] = txtPublishDate.Text;
rowIndex++;
}
}
}
else if (e.CommandName == "DeleteBook")
{
GridViewRow gvr = (GridViewRow)((ImageButton)e.CommandSource).NamingContainer;
dt.Rows.RemoveAt(gvr.RowIndex);
}
gvBooks.DataSource = dt;
gvBooks.DataBind();
}
protected void gvBooks_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddlGenre = (DropDownList)e.Row.Cells[3].FindControl("ddlGenre");
ddlGenre.SelectedValue = DataBinder.Eval(e.Row.DataItem, "Genre").ToString();
}
}
}
No comments:
Post a Comment