hi all, I'm very new to dotnet programming. I'm using c#. as per requirement I'm desiging order taking form from customer in a project. In that form, when u run the form(click on order button) empty grid should load and it should contain 5 columns (S.No auto generation, item (dropdown list), mrp (label),quantity(text box), total cost(label)). after enter/taking first item details, grid must display additional row with all controls(i.e dropdown list, labels, text box etc). it may be in button click event which in template field or in footer row also. after taking complete oreder the entire oreder must save in db.
I've tried alot I'm succeeded upto displaying empty grid(with no conn db), relavant all controls all displaying & working.i.e.,mrp of selected item in dropdownlist displaying in mrp label. after enter quntity in textbox, total cost is diplaying at tcost label. I'm stucked at adding new row.
I've used html for designing:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table>
<tr>
<td>
<asp:Label ID="Label3" runat="server" Text="Order Id"></asp:Label></td>
<td>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></td>
</tr>
</table>
</div>
<asp:GridView ID="grdv" ShowFooter="false" AutoGenerateColumns="False" runat="server"
onrowdatabound="grdv_RowDataBound"
onselectedindexchanged="grdv_SelectedIndexChanged"
OnRowCommand="grdv_RowCommand">
<Columns>
<asp:TemplateField HeaderText="SNO">
<ItemTemplate>
<%#Container.DataItemIndex + 1 %>
</ItemTemplate>
<%--</asp:TemplateField>
<asp:TemplateField HeaderText="orderid">
<ItemTemplate>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
</ItemTemplate>--%>
</asp:TemplateField>
<asp:TemplateField HeaderText="item">
<ItemTemplate>
<asp:DropDownList DataSource='<%# item() %>' DataTextField="itemname" DataValueField="itemname" ID="DropDownList1" runat="server" OnSelectedIndexChanged="dlist_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList>
</ItemTemplate>
<%--<EditItemTemplate>
<asp:DropDownList DataSource='<%# item() %>' DataTextField="itemname" DataValueField="itemname" OnSelectedIndexChanged="dlist_SelectedIndexChanged" AutoPostBack="true" ID="DropDownList1" runat="server"></asp:DropDownList>
</EditItemTemplate>--%>
</asp:TemplateField>
<asp:TemplateField HeaderText="mrp">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ItemTemplate>
<%-- <EditItemTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</EditItemTemplate>--%>
</asp:TemplateField>
<asp:TemplateField HeaderText="qty">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="tb_TextChanged" AutoPostBack="true"></asp:TextBox>
</ItemTemplate>
<%--<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="tb_TextChanged" AutoPostBack="true"></asp:TextBox>
</EditItemTemplate>--%>
</asp:TemplateField>
<asp:TemplateField HeaderText="tcost">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</ItemTemplate>
<%--<EditItemTemplate>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</EditItemTemplate>--%>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btninsert" CommandName="Insert" Text="InsertRow" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="btnaddrow" runat="server" onclick="Button2_Click" Text="add" />
<asp:Button ID="btinsert" runat="server" Text="insert" onclick="Button1_Click" />
</form>
</body>
</html>
c# code:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
public partial class Default2 : System.Web.UI.Page
{
SqlConnection cn = new SqlConnection("Data Source=SYS42;Initial Catalog=gc;Integrated Security=True");
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
ShowEmptyRow(grdv);
}
DataTable table = new DataTable();
public void ShowEmptyRow(GridView grid)
{
if (grid.Rows.Count == 0)
{
for (int i = 0; i < grid.Columns.Count; ++i)
{
if (grid.Columns[i] is BoundField)
{
table.Columns.Add((grid.Columns[i] as BoundField).DataField);
}
else
{
table.Columns.Add(grid.Columns[i].SortExpression);
}
}
table.Rows.Add(table.NewRow());
grid.DataSource = table;
grid.DataBind();
if (String.IsNullOrEmpty(grid.EmptyDataText) == false)
{
grid.Rows[0].Cells[0].ColumnSpan = table.Columns.Count;
grid.Rows[0].Cells[0].Text = grid.EmptyDataText;
while (grid.Rows[0].Cells.Count > 1)
{
grid.Rows[0].Cells.RemoveAt(1);
}
}
}
}
public DataSet item()
{
SqlDataAdapter da = new SqlDataAdapter("select itemname from items", cn);
DataSet d = new DataSet();
da.Fill(d);
return d;
}
protected void Button1_Click(object sender, EventArgs e)
{
for (int j = 0; j < grdv.Rows.Count; j++)
{
DropDownList itemname = (grdv.Rows[j].Cells[1].Controls[0].FindControl("DropDownList1")) as DropDownList;
TextBox qty = (grdv.Rows[j].Cells[3].Controls[0].FindControl("TextBox1")) as TextBox;
int id = Convert.ToInt32(TextBox2.Text);
Label tcost = (grdv.Rows[j].Cells[4].Controls[0].FindControl("Label2")) as Label;
cn.Open();
SqlCommand cm = new SqlCommand("insert into orders (orderid,itemname,quantity,tcost)values('" + id+ "','" + itemname.SelectedItem.ToString() + "','" + qty.Text + "','" + tcost.Text + "')", cn);
cm.ExecuteNonQuery();
cn.Close();
}
}
protected void grdv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (Page.IsPostBack)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList dlist = e.Row.FindControl("DropDownList1") as DropDownList;
if (dlist != null)
{
dlist.SelectedIndexChanged += new EventHandler(dlist_SelectedIndexChanged);
}
}
if (e.Row.RowType == DataControlRowType.DataRow)
{
TextBox tb = e.Row.FindControl("TextBox1") as TextBox;
if (tb != null)
{
tb.TextChanged += new EventHandler(tb_TextChanged);
}
}
}
}
public void tb_TextChanged(object sender, EventArgs e)
{
TextBox tbqty = (TextBox)sender;
GridViewRow grdrDropDownRow = ((GridViewRow)tbqty.Parent.Parent);
Label lblCurrentStatus = (Label)grdrDropDownRow.FindControl("Label1");
Label tcost = (Label)grdrDropDownRow.FindControl("Label2");
if (tbqty != null && lblCurrentStatus.Text != "")
{
int mrp = Convert.ToInt32(lblCurrentStatus.Text);
int quant = Convert.ToInt32(tbqty.Text);
float price = mrp * quant;
tcost.Text = price.ToString();
}
else
{
int mrp = Convert.ToInt32(lblCurrentStatus.Text);
int quant = Convert.ToInt32(tbqty.Text);
float price = mrp * quant;
tcost.Text = price.ToString();
}
}
public void dlist_SelectedIndexChanged(object sender, EventArgs e)
{
for (int a = 0; a < grdv.Rows.Count; a++)
{
DropDownList dl = sender as DropDownList;
GridViewRow row = dl.NamingContainer as GridViewRow;
int i = row.RowIndex;
DropDownList ddlCurrentDropDownList = (DropDownList)sender;
GridViewRow grdrDropDownRow = ((GridViewRow)ddlCurrentDropDownList.Parent.Parent);
Label lblCurrentStatus = (Label)grdrDropDownRow.FindControl("Label1");
TextBox tbqty = (TextBox)grdrDropDownRow.FindControl("TextBox1");
if (Page.IsPostBack)
{
tbqty.Text = string.Empty;
}
cn.Open();
SqlCommand cmd = new SqlCommand("select cost from items where itemname='" + ddlCurrentDropDownList.SelectedItem + "'", cn);
int ss = Convert.ToInt32(cmd.ExecuteScalar());
Label Label1 = (Label)grdv.Rows[i].Cells[2].FindControl("Label1");
Label1.Text = ss.ToString();
cn.Close();
}
}
protected void grdv_SelectedIndexChanged(object sender, EventArgs e)
{
}
protected void grdv_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Insert")
{
if (grdv.Rows.Count != 0)
{
if (table.Rows.Count != 0)
{
for (int i = 0; i < grdv.Columns.Count; ++i)
{
if (grdv.Columns[i] is BoundField)
{
table.Columns.Add((grdv.Columns[i] as BoundField).DataField);
}
else
{
table.Columns.Add(grdv.Columns[i].SortExpression);
}
}
table.Rows.Add(table.NewRow());
grdv.DataSource = table;
grdv.DataBind();
if (String.IsNullOrEmpty(grdv.EmptyDataText) == false)
{
grdv.Rows[0].Cells[0].ColumnSpan = table.Columns.Count;
grdv.Rows[0].Cells[0].Text = grdv.EmptyDataText;
while (grdv.Rows[0].Cells.Count > 1)
{
grdv.Rows[0].Cells.RemoveAt(1);
}
}
}
}
}
}
protected void Button2_Click(object sender, EventArgs e)
{
ShowEmptyRow(grdv);
}
}
please anyone guide me regarding this.