I have been fighting with this code for 3 days. I got everything to work....except its a bit glitchy as of right now and I can't figure out why. I am sure it is simple. They basic concept is something like this:
OFFICE
[txtbox] [txtbox] [txtbox] [label]
+add row
BUSINESS
[txtbox] [txtbox] [txtbox] [label]
+add row
SOFTWARE:
[txtbox] [txtbox] [txtbox] [label]
+add row
I add a row using AJAX control, viewstate, Page_Init and all the correct methods... the only thing is... If I hit Add row for Office it will...then if I hit add row for software it adds one to office...then i hit software again and it will add down to software. Its like its one off somewhere in the logic... i cant find it...its driving me insane... PLEASE help :) here is my code and my markup:
MARKUP
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!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>Property Equipment Purchase Worksheet</title>
<style type="text/css">
BODY
{
background:#C7D28A;
}
.Header
{
width:950px;
border:solid 1px #E98300;
background:#1e1e1e;
margin:0 auto;
padding:10px;
color:#E98300;
}
.Header_Logo
{
width:671px;
margin:0 auto;
}
.Header_Title
{
width:650px;
margin: 0 auto;
font-size:30px;
text-align:center;
}
.Main
{
background-color:#ede8c4;
border:solid 1px #E98300;
width:950px;
padding:10px;
margin:10px auto;
}
.WorkSheetNotes
{
margin-top:10px;
margin-bottom:10px;
margin-left:5px;
color:#726E20;
}
.WorksheetInformation .WorkSheetMain .WorkSheetNotes
{
width:900;
margin:5px auto;
padding:15px;
font-weight:bold;
}
.WorksheetInformation table
{
width:100%;
border:none;
}
.WorksheetInformation td
{
width:50%;
text-align:right;
}
.InputStyle
{
width:175px;
border:solid 1px black;
}
.WorksheetMainHeading
{
background:#263F6A;
font-size:23px;
text-align:center;
text-decoration:underline;
color:White;
padding:0px;
margin:0px;
width:50%;
}
.WorksheetEquipmentHeading
{
text-indent:5px;
text-align:left;
font-weight:bold;
background-color:#C5D2E0;
}
.WorksheetPriceHeading
{
text-indent:5px;
font-weight:bold;
background-color:#C5D2E0;
text-align:left;
border:solid 1px black;
}
.WorksheetEquipment
{
width:35%;
text-indent:15px;
text-align:left;
border:solid 1px black;
}
.WorksheetPrice
{
width:25%;
text-align:right;
border:solid 1px black;
}
.WorksheetQuantity
{
width:20%;
text-align:center;
border:solid 1px black;
}
.WorksheetTotals
{
width:20%;
text-align:right;
background-color:Gray;
border:solid 1px black;
}
.EquipmentInupt
{width:90%;}
.submit
{
background-color:#EDE8C4;
border:1px #E98300 solid;
width:200px;
height:25px;
padding-bottom:5px;
}
.SubmitDIV
{
float:right;
margin:10px;
padding:10px;
text-align:right;
display:inline;
}
.EquipmentHeading, .EquipmentListing
{
text-indent:5px;
font-weight:bold;
background-color:#C5D2E0;
text-align:left;
border:solid 1px black;
margin:1px 01px 0px 0px;
}
.EquipmentListing
{
background-color:#ede8c4;
height:455px;
}
.Equipment
{
height:28px;
width:35%;
float:left;
text-align:center;
}
.Price
{
height:28px;
width:25%;
float:left;
text-align:center;
}
.Quantity
{
height:28px;
width:19%;
float:left;
text-align:center;
}
.Totals
{
width:19%;
float:left;
height:28px;
text-align:right;
padding-right:3px;
background-color:inherit;
}
.WorksheetInputStyle
{
width:95%;
margin:3px auto 5px auto;
border:solid 1px black;
}
.Row { width:950px; }
.AddRow
{
margin-top:1px;
}
</style>
</head>
<body>
<script language=javascript>
function click_btn_office() {
document.form1.btnAddOfficeRow.click();
}
function click_btn_business() {
document.form1.btnAddBusinessRow.click();
}
function click_btn_software() {
document.form1.btnAddSoftwareRow.click();
}
</script>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:BHPropertyInfoConnectionString %>"
SelectCommand="SELECT [PROPERTY_NAME] FROM [PROPERTY_INFORMATION]">
</asp:SqlDataSource>
<div class="Header">
<div class="Header_Logo"><img src="Images/BH_Header.png" /></div>
<div class="Header_Title">Property Equipment Purchase Worksheet</div>
</div>
<div class="Main">
<div class="WorksheetInformation">
<table border="0">
<tr>
<td style="text-align:left"><asp:Label ID="lblDate" runat="server" Text="1"></asp:Label></td>
<td>Property Name:
<asp:DropDownList CssClass="InputStyle" ID="DropDownList1" runat="server"
DataSourceID="SqlDataSource1" DataTextField="PROPERTY_NAME"
DataValueField="PROPERTY_NAME">
</asp:DropDownList>
</td>
</tr>
<tr>
<td colspan="2" style="text-align:right;">Budget Cost Code: <asp:TextBox CssClass="InputStyle" ID="BudgetCostCode" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td colspan="2" style="text-align:center"><asp:Label ID="lblPurchasePrice" runat="server" Text="PurchacePrice: $0000.00"></asp:Label></td>
</tr>
</table>
</div>
<div class="WorkSheetNotes">
Note: Printer Prices do not include tax or shipping costs. If building wiring is required contact Kevin Nance.
</div>
<div class="WorkSheetMain">
<div class="Row">
<div class="EquipmentHeading Equipment">Office Equipment</div>
<div class="EquipmentHeading Price">Purchase Price</div>
<div class="EquipmentHeading Quantity">Quantity</div>
<div class="EquipmentHeading Totals">Totals</div>
<div class="EquipmentListing Equipment"><asp:TextBox CssClass="WorksheetInputStyle" ID="OfficeEquipment0" runat="server"></asp:TextBox></div>
<div class="EquipmentListing Price"><asp:TextBox CssClass="WorksheetInputStyle" ID="OfficePrice0" runat="server"></asp:TextBox></div>
<div class="EquipmentListing Quantity"><asp:TextBox CssClass="WorksheetInputStyle" ID="OfficeQuantity0" runat="server"></asp:TextBox></div>
<div class="EquipmentListing Totals"><asp:Label CssClass="Totals" ID="OfficeTotal0" runat="server" Text="$"></asp:Label></div>
<asp:UpdatePanel ID="upPanel" runat="server">
<ContentTemplate>
<asp:Panel ID="phOfficeEquipment" runat="server"></asp:Panel>
<div class="AddRow"><a href="#" onclick="click_btn_office()">+ Add Row</a><asp:Button ID="btnAddOfficeRow" runat="server" Text="Button" /></div>
<div class="EquipmentHeading Equipment">Business Center Equipment</div>
<div class="EquipmentHeading Price">Purchase Price</div>
<div class="EquipmentHeading Quantity">Quantity</div>
<div class="EquipmentHeading Totals">Totals</div>
<div class="EquipmentListing Equipment"><asp:TextBox CssClass="WorksheetInputStyle" ID="BusinessEquipment0" runat="server"></asp:TextBox></div>
<div class="EquipmentListing Price"><asp:TextBox CssClass="WorksheetInputStyle" ID="BusinessPrice0" runat="server"></asp:TextBox></div>
<div class="EquipmentListing Quantity"><asp:TextBox CssClass="WorksheetInputStyle" ID="BusinessQuantity0" runat="server"></asp:TextBox></div>
<div class="EquipmentListing Totals"><asp:Label CssClass="Totals" ID="BusinessTotal0" runat="server" Text="$"></asp:Label></div>
<asp:Panel ID="phBusinessEquipment" runat="server"></asp:Panel>
<div class="AddRow"><a href="#" onclick="click_btn_business()">+ Add Row</a><asp:Button ID="btnAddBusinessRow" runat="server" Text="Button" /></div>
<div class="EquipmentHeading Equipment">software Center Equipment</div>
<div class="EquipmentHeading Price">Purchase Price</div>
<div class="EquipmentHeading Quantity">Quantity</div>
<div class="EquipmentHeading Totals">Totals</div>
<div class="EquipmentListing Equipment"><asp:TextBox CssClass="WorksheetInputStyle" ID="softwareEquipment0" runat="server"></asp:TextBox></div>
<div class="EquipmentListing Price"><asp:TextBox CssClass="WorksheetInputStyle" ID="softwarePrice0" runat="server"></asp:TextBox></div>
<div class="EquipmentListing Quantity"><asp:TextBox CssClass="WorksheetInputStyle" ID="softwareQuantity0" runat="server"></asp:TextBox></div>
<div class="EquipmentListing Totals"><asp:Label CssClass="Totals" ID="softwareTotal0" runat="server" Text="$"></asp:Label></div>
<asp:Panel ID="phsoftwareEquipment" runat="server"></asp:Panel>
<div class="AddRow"><a href="#" onclick="click_btn_software()">+ Add Row</a><asp:Button ID="btnAddsoftwareRow" runat="server" Text="Button" /></div>
</ContentTemplate>
</asp:UpdatePanel>
<div class="SubmitDIV">
<asp:Button ID="Button1" runat="server" CssClass="submit" Text="Submit Request" />
</div>
</div>
</div>
</div>
</form>
</body>
</html>
CODE:
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub btnAddOfficeRow_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAddOfficeRow.Click
If Page.IsPostBack = True Then
Session("office_row_click") = Session("office_row_click") + 1
Session("lastclicked") = "office"
End If
End Sub
Protected Sub btnAddBusinessRow_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAddBusinessRow.Click
If Page.IsPostBack = True Then
Session("business_row_click") = Session("business_row_click") + 1
Session("lastclicked") = "business"
End If
End Sub
Protected Sub btnAddsoftwareRow_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAddsoftwareRow.Click
If Page.IsPostBack = True Then
Session("software_row_click") = Session("software_row_click") + 1
Session("lastclicked") = "software"
End If
End Sub
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
add_office_rows()
add_business_rows()
add_software_rows()
End Sub
Public Function add_office_rows() As String
Dim cnt As Integer = Session("office_row_click")
lblPurchasePrice.Text = cnt.ToString
For x = 1 To cnt
Dim OfficeEquipmentRow, OfficePriceRow, OfficeQuantityRow As TextBox
Dim OfficeEquipmentRowDiv, OfficePriceRowDiv, OfficeQuantityRowDiv, OfficeTotalRowDiv As Panel
Dim OfficeTotalRow As Label = New Label
OfficeEquipmentRow = New TextBox
OfficePriceRow = New TextBox
OfficeQuantityRow = New TextBox
OfficeTotalRowDiv = New Panel
OfficeEquipmentRowDiv = New Panel
OfficePriceRowDiv = New Panel
OfficeQuantityRowDiv = New Panel
OfficeTotalRowDiv = New Panel
phOfficeEquipment.Controls.Add(OfficeEquipmentRowDiv)
OfficeEquipmentRowDiv.Controls.Add(OfficeEquipmentRow)
phOfficeEquipment.Controls.Add(OfficePriceRowDiv)
OfficePriceRowDiv.Controls.Add(OfficePriceRow)
phOfficeEquipment.Controls.Add(OfficeQuantityRowDiv)
OfficeQuantityRowDiv.Controls.Add(OfficeQuantityRow)
phOfficeEquipment.Controls.Add(OfficeTotalRowDiv)
OfficeTotalRowDiv.Controls.Add(OfficeTotalRow)
OfficeEquipmentRow.ID = "OfficeEquipment" & x
OfficePriceRow.ID = "OfficePrice" & x
OfficeQuantityRow.ID = "OfficeQuantity" & x
OfficeTotalRow.ID = "OfficeTotal" & x
OfficeEquipmentRowDiv.ID = "OfficeEquipmentDiv" & x
OfficePriceRowDiv.ID = "OfficePriceDiv" & x
OfficeQuantityRowDiv.ID = "OfficeQuantityDiv" & x
OfficeTotalRowDiv.ID = "OfficeTotalDiv" & x
OfficeEquipmentRowDiv.CssClass = "EquipmentListing Equipment"
OfficePriceRowDiv.CssClass = "EquipmentListing Price"
OfficeQuantityRowDiv.CssClass = "EquipmentListing Quantity"
OfficeTotalRowDiv.CssClass = "EquipmentListing Totals"
OfficeEquipmentRow.CssClass = "WorksheetInputStyle"
OfficePriceRow.CssClass = "WorksheetInputStyle"
OfficeQuantityRow.CssClass = "WorksheetInputStyle"
OfficeTotalRow.CssClass = "Totals"
OfficeTotalRow.Text = "$"
Next
Return vbNull
End Function
Public Function add_business_rows() As String
Dim cnt As Integer = Session("business_row_click")
lblPurchasePrice.Text = cnt.ToString
For x = 1 To cnt
Dim businessEquipmentRow, businessPriceRow, businessQuantityRow As TextBox
Dim businessEquipmentRowDiv, businessPriceRowDiv, businessQuantityRowDiv, businessTotalRowDiv As Panel
Dim businessTotalRow As Label = New Label
businessEquipmentRow = New TextBox
businessPriceRow = New TextBox
businessQuantityRow = New TextBox
businessTotalRowDiv = New Panel
businessEquipmentRowDiv = New Panel
businessPriceRowDiv = New Panel
businessQuantityRowDiv = New Panel
businessTotalRowDiv = New Panel
phBusinessEquipment.Controls.Add(businessEquipmentRowDiv)
businessEquipmentRowDiv.Controls.Add(businessEquipmentRow)
phBusinessEquipment.Controls.Add(businessPriceRowDiv)
businessPriceRowDiv.Controls.Add(businessPriceRow)
phBusinessEquipment.Controls.Add(businessQuantityRowDiv)
businessQuantityRowDiv.Controls.Add(businessQuantityRow)
phBusinessEquipment.Controls.Add(businessTotalRowDiv)
businessTotalRowDiv.Controls.Add(businessTotalRow)
businessEquipmentRow.ID = "businessEquipment" & x
businessPriceRow.ID = "businessPrice" & x
businessQuantityRow.ID = "businessQuantity" & x
businessTotalRow.ID = "businessTotal" & x
businessEquipmentRowDiv.ID = "businessEquipmentDiv" & x
businessPriceRowDiv.ID = "businessPriceDiv" & x
businessQuantityRowDiv.ID = "businessQuantityDiv" & x
businessTotalRowDiv.ID = "businessTotalDiv" & x
businessEquipmentRowDiv.CssClass = "EquipmentListing Equipment"
businessPriceRowDiv.CssClass = "EquipmentListing Price"
businessQuantityRowDiv.CssClass = "EquipmentListing Quantity"
businessTotalRowDiv.CssClass = "EquipmentListing Totals"
businessEquipmentRow.CssClass = "WorksheetInputStyle"
businessPriceRow.CssClass = "WorksheetInputStyle"
businessQuantityRow.CssClass = "WorksheetInputStyle"
businessTotalRow.CssClass = "Totals"
businessTotalRow.Text = "$"
Next
Return vbNull
End Function
Public Function add_software_rows() As String
Dim cnt As Integer = Session("software_row_click")
lblPurchasePrice.Text = cnt.ToString
For x = 1 To cnt
Dim softwareEquipmentRow, softwarePriceRow, softwareQuantityRow As TextBox
Dim softwareEquipmentRowDiv, softwarePriceRowDiv, softwareQuantityRowDiv, softwareTotalRowDiv As Panel
Dim softwareTotalRow As Label = New Label
softwareEquipmentRow = New TextBox
softwarePriceRow = New TextBox
softwareQuantityRow = New TextBox
softwareTotalRowDiv = New Panel
softwareEquipmentRowDiv = New Panel
softwarePriceRowDiv = New Panel
softwareQuantityRowDiv = New Panel
softwareTotalRowDiv = New Panel
phsoftwareEquipment.Controls.Add(softwareEquipmentRowDiv)
softwareEquipmentRowDiv.Controls.Add(softwareEquipmentRow)
phsoftwareEquipment.Controls.Add(softwarePriceRowDiv)
softwarePriceRowDiv.Controls.Add(softwarePriceRow)
phsoftwareEquipment.Controls.Add(softwareQuantityRowDiv)
softwareQuantityRowDiv.Controls.Add(softwareQuantityRow)
phsoftwareEquipment.Controls.Add(softwareTotalRowDiv)
softwareTotalRowDiv.Controls.Add(softwareTotalRow)
softwareEquipmentRow.ID = "softwareEquipment" & x
softwarePriceRow.ID = "softwarePrice" & x
softwareQuantityRow.ID = "softwareQuantity" & x
softwareTotalRow.ID = "softwareTotal" & x
softwareEquipmentRowDiv.ID = "softwareEquipmentDiv" & x
softwarePriceRowDiv.ID = "softwarePriceDiv" & x
softwareQuantityRowDiv.ID = "softwareQuantityDiv" & x
softwareTotalRowDiv.ID = "softwareTotalDiv" & x
softwareEquipmentRowDiv.CssClass = "EquipmentListing Equipment"
softwarePriceRowDiv.CssClass = "EquipmentListing Price"
softwareQuantityRowDiv.CssClass = "EquipmentListing Quantity"
softwareTotalRowDiv.CssClass = "EquipmentListing Totals"
softwareEquipmentRow.CssClass = "WorksheetInputStyle"
softwarePriceRow.CssClass = "WorksheetInputStyle"
softwareQuantityRow.CssClass = "WorksheetInputStyle"
softwareTotalRow.CssClass = "Totals"
softwareTotalRow.Text = "$"
Next
Return vbNull
End Function
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Session("office_row_click") = vbNull Then
Session("office_row_click") = 1
End If
If Session("office_row_click") = 0 Then
Session("office_row_click") = 1
End If
If Session("business_row_click") = 0 Then
Session("business_row_click") = 1
End If
If Session("business_row_click") = vbNull Then
Session("business_row_click") = 1
End If
If Session("software_row_click") = 0 Then
Session("software_row_click") = 1
End If
If Session("software_row_click") = vbNull Then
Session("software_row_click") = 1
End If
End Sub
Protected Sub OfficePrice0_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles OfficePrice0.TextChanged
End Sub
End Class
(this code is still in development and may not be the neatest...do forgive me :) )