Double the textbox values in gridview (datatable) if same row from datlist is clicked
i am having a datalist and a gridview ..i am having a button inside an itemtemplate in datalist.
i am handling an item command event
when i click on a button a row is added to datatable in gridview ..
if same row again is clicked ...i want a column value (quantity) to double in it..
What I have tried:
source view :
<asp:GridView ID="BillingGridView" runat="server" AutoGenerateColumns="false"
AllowSorting="True" OnPageIndexChanging="BillingGridView_PageIndexChanging"
OnRowDataBound="BillingGridView_RowDataBound"
OnSorting="BillingGridView_Sorting1" OnRowCreated="BillingGridView_RowCreated1"
OnRowCommand="BillingGridView_RowCommand" DataKeyNames="ItemId"
TabIndex="-1" Width="100%"
PageSize="7" BackColor="White" BorderColor="#336666" BorderStyle="Double"
BorderWidth="3px" CellPadding="4" GridLines="Horizontal"
style="margin-bottom: 0px">
<columns>
<asp:TemplateField HeaderText="SNo">
<itemtemplate>
<%# Container.DataItemIndex + 1 %>
<asp:BoundField HeaderText="ItemId" DataField="ItemId" />
<asp:BoundField HeaderText="Item" DataField="ItemName" />
<asp:TemplateField HeaderText="Quantity">
<itemtemplate>
<asp:TextBox ID="TxtQty" runat="server" Text='<%#Eval("Quantity") %>' OnTextChanged="TxtQty_TextChanged"
AutoPostBack="true" onkeypress="return validatenumerics(event);">
<asp:BoundField HeaderText="Units" DataField="Units" />
<asp:BoundField HeaderText="Price" DataField="UnitPrice" />
<asp:TemplateField HeaderText="Disc %">
<itemtemplate>
<asp:TextBox ID="TxtDisc" runat="server" Text='<%#Eval("Discount") %>' OnTextChanged="TxtDisc_TextChanged"
AutoPostBack="true" onkeypress="return validatenumerics(event);" >
<asp:BoundField HeaderText="Value" DataField="Value" />
<asp:TemplateField HeaderText="Delete Item">
<itemtemplate>
<asp:Button ID="lnkdelete" runat="server" Text="Del" CausesValidation="false" OnClick="lnkdelete_Click" OnClientClick="return ConfirmMethod('DeleteItem')" />
<SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="White" Height="30px" Font-Size="10" Font-Names="Calibri"
HorizontalAlign="Center" ForeColor="#333333" />
<FooterStyle BackColor="White" ForeColor="#333333" />
<PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle Font-Size="12" Font-Names="Calibri" BackColor="#336666" Font-Bold="True"
ForeColor="White" />
<EditRowStyle BorderColor="Silver" />
<SortedAscendingCellStyle BackColor="#F7F7F7" />
<SortedAscendingHeaderStyle BackColor="#487575" />
<SortedDescendingCellStyle BackColor="#E5E5E5" />
<SortedDescendingHeaderStyle BackColor="#275353" />
<asp:DataList runat="server" ID="datalist" RepeatColumns="1" RepeatDirection="Horizontal"
OnItemDataBound="datalist_ItemDataBound"
OnItemCreated="datalist_ItemCreated" AlternatingItemStyle-Wrap="true" CellSpacing="10"
OnItemCommand="datalist_ItemCommand" CssClass="Itemdatalist_div"
Height="219px" Width="477px" DataKeyNames="ItemId" EmptyDataText="No Rows To Display">
<AlternatingItemStyle Wrap="True" />
<itemtemplate>
<%--
<asp:Label ID="PriceLabel" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "UnitPrice")%>'>
--%>
<asp:Button ID="testing" ForeColor="#353432" Font-Bold="true" Font-Size="Smaller" CausesValidation="true" BorderStyle="Dotted" BackColor="#EBFAE6" runat="server" BorderColor="Black"
OnClientClick='<%#String.Format("return SetItemDetails({0},{1},{2},{3},{4})", Eval("ItemId"), Eval("ItemName"),Eval("Cost"),Eval("Dateofexpire"),Eval("Quantity"), Eval("Units"),Eval("UnitPrice"),Eval("Location"),Eval("Description")) %>'
OnClick="testing_Click" Height="35px" Width="100%" Text='<%#"("+ DataBinder.Eval(Container.DataItem, "ItemName")+")"+" (Price:"+ DataBinder.Eval(Container.DataItem, "UnitPrice")+")"+" (Qty:"+ DataBinder.Eval(Container.DataItem, "Quantity")+")"+" (units:"+ DataBinder.Eval(Container.DataItem,"Units")+")"+" (Location:" + DataBinder.Eval(Container.DataItem,"Location")%>'
CommandArgument='<%#Eval("ItemId") %>' ToolTip ='<%#"Qty:" +"("+ DataBinder.Eval(Container.DataItem, "Quantity")+")"+ " Location:" + DataBinder.Eval(Container.DataItem,"location")+ " Units:" + DataBinder.Eval(Container.DataItem,"Units")%>'/>
code view :
protected void datalist_ItemCommand(object source, DataListCommandEventArgs e)
{
if (Session["mytable"] == null)
{
dt = new DataTable("mytable");
dt.Columns.Add("ItemId", typeof(string));
dt.Columns.Add("ItemName", typeof(string));
dt.Columns.Add("Cost", typeof(string));
dt.Columns.Add("Dateofexpire", typeof(string));
dt.Columns.Add("Quantity", typeof(string));
dt.Columns.Add("Units", typeof(string));
dt.Columns.Add("UnitPrice", typeof(string));
dt.Columns.Add("Location", typeof(string));
dt.Columns.Add("Description", typeof(string));
dt.Columns.Add("Discount", typeof(string));
dt.Columns.Add("Value", typeof(string));
}
else
{
//If yes then get it from current session
dt = (DataTable)Session["MyTable"];
}
int empid = Convert.ToInt32(e.CommandArgument.ToString());
strSqlCommmand = "Select * from ItemsMaster Where ItemId=@ItemId";
cn = new SqlConnection("Data Source=USER;User Id=sa;Password=123456;Database=BillData");
if (cn.State != ConnectionState.Open)
cn.Open();
cmd = new SqlCommand(strSqlCommmand, cn);
cmd.Parameters.AddWithValue("ItemId", empid);
SqlDataReader dr = cmd.ExecuteReader();
try {
if (dr.Read())
{
int itemid= Convert.ToInt32(dr["ItemId"].ToString());
string itemname= dr["ItemName"].ToString();
string cost= dr["Cost"].ToString();
string datime= dr["Dateofexpire"].ToString();
string qlty = dr["Quantity"].ToString();
string units = dr["Units"].ToString();
string unitprice= dr["UnitPrice"].ToString();
string loctn = dr["Location"].ToString();
string desc = dr["Description"].ToString();
// txtCustName.Text = dr["ItemId"].ToString();
DataRow nw = dt.NewRow();
nw["ItemId"] = itemid.ToString();
nw["ItemName"] = itemname.ToString();
nw["Cost"] = cost.ToString();
nw["Dateofexpire"] = datime.ToString();
nw["Quantity"] = qlty.ToString();
nw["Units"] = units.ToString();
nw["UnitPrice"] = unitprice.ToString();
nw["Location"] = loctn.ToString();
nw["Description"] = desc.ToString();
nw["Discount"] = "";
nw["Value"] = "";
dt.Rows.Add(nw);
Session["mytable"] = dt;
BillingGridView.DataSource = dt;
BillingGridView.DataBind();
dr.Close();
cn.Close();
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}