HTML:
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div id="dvGrid" style="padding: 10px; width: 550px">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" Width="550px" AutoGenerateColumns="false"
Font-Names="Arial" Font-Size="11pt" AlternatingRowStyle-BackColor="#C2D69B" HeaderStyle-BackColor="green"
AllowPaging="true" ShowFooter="true" OnPageIndexChanging="OnPaging" OnRowEditing="EditCustomer"
OnRowUpdating="UpdateCustomer" OnRowDataBound="RowDataBound" OnRowCancelingEdit="CancelEdit"
PageSize="10">
<Columns>
<asp:TemplateField ItemStyle-Width="30px" HeaderText="Id">
<ItemTemplate>
<asp:Label ID="lblId" runat="server" Text='<%# Eval("Id")%>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtId" Width="40px" MaxLength="5" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="100px" HeaderText="Item">
<ItemTemplate>
<asp:Label ID="lblItem" runat="server" Text='<%# Eval("Item")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtItem" runat="server" Text='<%# Eval("Item")%>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtItem" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="150px" HeaderText="Quantity">
<ItemTemplate>
<asp:Label ID="lblQuantity" runat="server" Text='<%# Eval("Quantity")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtQuantity" runat="server" Text='<%# Eval("Quantity")%>'></asp:TextBox>
<asp:Label ID="lblQuantity" runat="server" Visible="false" Text='<%# Eval("Quantity")%>'></asp:Label>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtQuantity" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="150px" HeaderText="Price">
<ItemTemplate>
<asp:Label ID="lblPrice" runat="server" Text='<%# Eval("Price")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtPrice" runat="server" Text='<%# Eval("Price")%>'></asp:TextBox>
<asp:Label ID="lblPrice" runat="server" Visible="false" Text='<%# Eval("Price")%>'></asp:Label>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtPrice" runat="server"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Total" ControlStyle-Width="200">
<ItemTemplate>
<asp:Label ID="lblTotal" runat="server"></asp:Label>
</ItemTemplate>
<FooterTemplate>
Total :
<br />
<asp:Label ID="lblTotalFooter" runat="server" Text='<%# GetTotalInWords() %>'></asp:Label>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkRemove" runat="server" CommandArgument='<%# Eval("Id")%>'
OnClientClick="return confirm('Do you want to delete?')" Text="Delete" OnClick="DeleteCustomer"></asp:LinkButton>
</ItemTemplate>
<FooterTemplate>
<asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="AddNewCustomer" />
</FooterTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" />
</Columns>
<AlternatingRowStyle BackColor="#C2D69B" />
<EmptyDataTemplate>
<table cellspacing="0" rules="all" border="1" id="GridView1" style="font-family: Arial;
font-size: 11pt; width: 550px; border-collapse: collapse;">
<tr style="background-color: Green;">
<th scope="col">
Id
</th>
<th scope="col">
Item
</th>
<th scope="col">
Quantity
</th>
<th scope="col">
Price
</th>
<th scope="col">
Total
</th>
<th scope="col">
</th>
<th scope="col">
</th>
</tr>
<tr>
<td style="width: 30px;">
<asp:TextBox ID="txtId" Width="40px" MaxLength="5" runat="server"></asp:TextBox>
</td>
<td style="width: 100px;">
<asp:TextBox ID="txtItem" runat="server" Text='<%# Eval("Item")%>'></asp:TextBox>
</td>
<td style="width: 150px;">
<asp:TextBox ID="txtQuantity" runat="server" Text='<%# Eval("Quantity")%>'></asp:TextBox>
</td>
<td style="width: 150px;">
<asp:TextBox ID="txtPrice" runat="server" Text='<%# Eval("Price")%>'></asp:TextBox>
</td>
<td>
</td>
<td>
<asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="AddNewCustomer" />
</td>
<td>
</td>
</tr>
</table>
</EmptyDataTemplate>
</asp:GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="GridView1" />
</Triggers>
</asp:UpdatePanel>
</div>
</form>
C#:
private double total = 0;
private string totalInWords = string.Empty;
private String strConnString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData();
}
}
public String changeNumericToWords(double numb)
{
String num = numb.ToString();
return changeToWords(num, false);
}
private String changeToWords(String numb, bool isCurrency)
{
String val = "", wholeNo = numb, points = "", andStr = "", pointStr = "";
String endStr = (isCurrency) ? ("Only") : ("");
try
{
int decimalPlace = numb.IndexOf(".");
if (decimalPlace > 0)
{
wholeNo = numb.Substring(0, decimalPlace);
points = numb.Substring(decimalPlace + 1);
if (Convert.ToInt32(points) > 0)
{
andStr = (isCurrency) ? ("and") : ("point");// just to separate whole numbers from points/cents
endStr = (isCurrency) ? ("Cents " + endStr) : ("");
pointStr = translateCents(points);
}
}
val = String.Format("{0} {1}{2} {3}", translateWholeNumber(wholeNo).Trim(), andStr, pointStr, endStr);
}
catch { ;}
return val;
}
private String translateCents(String cents)
{
String cts = "", digit = "", engOne = "";
for (int i = 0; i < cents.Length; i++)
{
digit = cents[i].ToString();
if (digit.Equals("0"))
{
engOne = "Zero";
}
else
{
engOne = ones(digit);
}
cts += " " + engOne;
}
return cts;
}
private String translateWholeNumber(String number)
{
string word = "";
try
{
bool beginsZero = false;//tests for 0XX
bool isDone = false;//test if already translated
double dblAmt = (Convert.ToDouble(number));
//if ((dblAmt > 0) && number.StartsWith("0"))
if (dblAmt > 0)
{//test for zero or digit zero in a nuemric
beginsZero = number.StartsWith("0");
int numDigits = number.Length;
int pos = 0;//store digit grouping
String place = "";//digit grouping name:hundres,thousand,etc...
switch (numDigits)
{
case 1://ones' range
word = ones(number);
isDone = true;
break;
case 2://tens' range
word = tens(number);
isDone = true;
break;
case 3://hundreds' range
pos = (numDigits % 3) + 1;
place = " Hundred ";
break;
case 4://thousands' range
case 5:
case 6:
pos = (numDigits % 4) + 1;
place = " Thousand ";
break;
case 7://millions' range
case 8:
case 9:
pos = (numDigits % 7) + 1;
place = " Million ";
break;
case 10://Billions's range
pos = (numDigits % 10) + 1;
place = " Billion ";
break;
//add extra case options for anything above Billion...
default:
isDone = true;
break;
}
if (!isDone)
{//if transalation is not done, continue...(Recursion comes in now!!)
word = translateWholeNumber(number.Substring(0, pos)) + place + translateWholeNumber(number.Substring(pos));
//check for trailing zeros
if (beginsZero) word = " and " + word.Trim();
}
//ignore digit grouping names
if (word.Trim().Equals(place.Trim())) word = "";
}
}
catch { ;}
return word.Trim();
}
private String tens(String digit)
{
int digt = Convert.ToInt32(digit);
String name = null;
switch (digt)
{
case 10:
name = "Ten";
break;
case 11:
name = "Eleven";
break;
case 12:
name = "Twelve";
break;
case 13:
name = "Thirteen";
break;
case 14:
name = "Fourteen";
break;
case 15:
name = "Fifteen";
break;
case 16:
name = "Sixteen";
break;
case 17:
name = "Seventeen";
break;
case 18:
name = "Eighteen";
break;
case 19:
name = "Nineteen";
break;
case 20:
name = "Twenty";
break;
case 30:
name = "Thirty";
break;
case 40:
name = "Fourty";
break;
case 50:
name = "Fifty";
break;
case 60:
name = "Sixty";
break;
case 70:
name = "Seventy";
break;
case 80:
name = "Eighty";
break;
case 90:
name = "Ninety";
break;
default:
if (digt > 0)
{
name = tens(digit.Substring(0, 1) + "0") + " " + ones(digit.Substring(1));
}
break;
}
return name;
}
private String ones(String digit)
{
int digt = Convert.ToInt32(digit);
String name = "";
switch (digt)
{
case 1:
name = "One";
break;
case 2:
name = "Two";
break;
case 3:
name = "Three";
break;
case 4:
name = "Four";
break;
case 5:
name = "Five";
break;
case 6:
name = "Six";
break;
case 7:
name = "Seven";
break;
case 8:
name = "Eight";
break;
case 9:
name = "Nine";
break;
}
return name;
}
private void BindData()
{
string strQuery = "select Id,Item,Quantity,Price from Product1";
SqlCommand cmd = new SqlCommand(strQuery);
GridView1.DataSource = GetData(cmd);
GridView1.DataBind();
}
private DataTable GetData(SqlCommand cmd)
{
DataTable dt = new DataTable();
SqlConnection con = new SqlConnection(strConnString);
SqlDataAdapter sda = new SqlDataAdapter();
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
sda.SelectCommand = cmd;
sda.Fill(dt);
return dt;
}
protected void OnPaging(object sender, GridViewPageEventArgs e)
{
BindData();
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
}
protected void AddNewCustomer(object sender, EventArgs e)
{
Control control = null;
if (GridView1.FooterRow != null)
{
control = GridView1.FooterRow;
}
else
{
control = GridView1.Controls[0].Controls[0];
}
string id = ((TextBox)control.FindControl("txtId")).Text;
string item = ((TextBox)control.FindControl("txtItem")).Text;
string quantity = ((TextBox)control.FindControl("txtQuantity")).Text;
string price = ((TextBox)control.FindControl("txtPrice")).Text;
SqlConnection con = new SqlConnection(strConnString);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "insert into Product1(Id,Item,Quantity,Price) " +
"values(@Id,@Item,@Quantity,@Price)";
cmd.Parameters.Add("@Id", SqlDbType.VarChar).Value = id;
cmd.Parameters.Add("@Item", SqlDbType.VarChar).Value = item;
cmd.Parameters.Add("@Quantity", SqlDbType.VarChar).Value = quantity;
cmd.Parameters.Add("@Price", SqlDbType.VarChar).Value = price;
this.insertData(cmd);
BindData();
}
public void insertData(SqlCommand cmd)
{
SqlConnection con = new SqlConnection(strConnString);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
public string GetTotalInWords()
{
return totalInWords;
}
protected void RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string total1 = string.Empty;
total1 = ((Convert.ToDouble((e.Row.Cells[2].FindControl("lblQuantity") as Label).Text)) * (Convert.ToDouble((e.Row.Cells[3].FindControl("lblPrice") as Label).Text))).ToString();
(e.Row.Cells[4].FindControl("lblTotal") as Label).Text = total1;
total += (Convert.ToDouble((e.Row.Cells[4].FindControl("lblTotal") as Label).Text));
totalInWords = this.changeNumericToWords(total);
}
}
protected void DeleteCustomer(object sender, EventArgs e)
{
LinkButton lnkRemove = (LinkButton)sender;
SqlConnection con = new SqlConnection(strConnString);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "delete from Product1 where " +
"Id=@Id";
cmd.Parameters.Add("@Id", SqlDbType.VarChar).Value = lnkRemove.CommandArgument;
this.insertData(cmd);
BindData();
}
protected void EditCustomer(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
BindData();
}
protected void CancelEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
BindData();
}
protected void UpdateCustomer(object sender, GridViewUpdateEventArgs e)
{
string id = ((Label)GridView1.Rows[e.RowIndex].FindControl("lblId")).Text;
string item = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtItem")).Text;
string quantity = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtQuantity")).Text;
string price = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtPrice")).Text;
SqlConnection con = new SqlConnection(strConnString);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "update Product1 set Item=@Item,Quantity=@Quantity,Price=@Price " +
"where Id=@Id";
cmd.Parameters.Add("@Id", SqlDbType.VarChar).Value = id;
cmd.Parameters.Add("@Item", SqlDbType.VarChar).Value = item;
cmd.Parameters.Add("@Quantity", SqlDbType.VarChar).Value = quantity;
cmd.Parameters.Add("@Price", SqlDbType.VarChar).Value = price;
GridView1.EditIndex = -1;
this.insertData(cmd);
BindData();
}
SQL:
CREATE TABLE [dbo].[Product1](
[Id] [int] NULL,
[Item] [varchar](50) NULL,
[Quantity] [int] NULL,
[Price] INT NULL
) ON [PRIMARY]
GO
