E
ELandry
The issue i'm having is after i enter all my data into my gridview's
textboxes and dropdownlists the data wont stick. My object data source dumps
to a class but after the update the grid should read from the class as well.
After the update button is clicked all the data passes through the class like
it should and doesn't throw any errors. After all the data moves through the
class and the page reloads, it looks like it's adding a new line. I am new to
using "OOP" so my class's may be a bit off. I was told by a co-worker that i
should have an update method and not use the same insert method? As this may
be the issue, if someone could please take look at my class and show me what
an actual update method is. The commented portion of my class below was my
attempt at building an update method.
All help is greatly appreciated. Thanks!
ASPX code
<asp:GridView ID="pogrid" runat="server"
AutoGenerateColumns="False"
style="margin-left: 0px; margin-right: 0px; margin-bottom: 0px"
Width="1020px" BorderColor="Black" BorderStyle="Solid"
CellPadding="4"
BackColor="White" BorderWidth="1px"
ForeColor="Black"
GridLines="Vertical" HorizontalAlign="Center"
BackImageUrl="~/POTracking/images/buttontemplate.jpg"
Font-Names="Calibri" DataSourceID="ObjectDataSource1">
<FooterStyle BackColor="#CCCC99" />
<RowStyle BackColor="#E1E3EC" BorderColor="Black"
BorderStyle="Solid"
BorderWidth="1px" Font-Names="Calibri"
HorizontalAlign="Center" />
<Columns>
<asp:CommandField ButtonType="Image"
DeleteImageUrl="~/POTracking/images/Deletesmall.png"
ShowCancelButton="False" ShowDeleteButton="True"
ShowEditButton="True"
EditImageUrl="~/POTracking/images/Document.png"
ShowInsertButton="True"
UpdateImageUrl="~/POTracking/images/Sync.png" />
<asp:TemplateField HeaderText="QTY" SortExpression="Quantity">
<headerstyle width="36px" />
<EditItemTemplate>
<asp:TextBox ID="qtybox" runat="server" width="32px"
Text='<%# Bind("Quantity", "{0}")
%>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="qtylbl" runat="server" Text='<%#
Bind("Quantity") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle Width="40px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Bill To"
SortExpression="Billto" >
<headerstyle width="85px" />
<EditItemTemplate>
<aspropDownList ID="billtobox" runat="server"
DataSourceID="billto"
DataTextField="name" datavaluefield="id"
Width="79px"
SelectedValue='<%# Bind("Billto", "{0}") %>'
appenddatabounditems="true">
<asp:ListItem Value="0">Select</asp:ListItem>
</aspropDownList>
<asp:SqlDataSource ID="billto" runat="server"
ConnectionString="<%$
ConnectionStringsOTracking %>" SelectCommand="billto"
SelectCommandType="StoredProcedure"></asp:SqlDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="billtolbl" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Description"
SortExpression="Description">
<headerstyle width="454px" />
<EditItemTemplate>
<asp:TextBox ID="descbox" width="450px"
runat="server" Text='<%# Bind("Description") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="desclbl" runat="server" Text='<%#
Bind("Description") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Type" SortExpression="Type">
<headerstyle width="44px" />
<EditItemTemplate>
<aspropDownList ID="typebox" runat="server"
width="40px" appenddatabounditems="True"
DataSourceID="seltype" DataTextField='typeabbr'
DataValueField="id" SelectedValue='<%#
Bind("Type", "{0}") %>'>
<asp:ListItem Value="0">Select</asp:ListItem>
</aspropDownList>
<asp:SqlDataSource ID="seltype" runat="server"
ConnectionString="<%$
ConnectionStringsOTracking %>" SelectCommand="type"
SelectCommandType="StoredProcedure"></asp:SqlDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="typelbl" runat="server" Text='<%#
Bind("Type") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle Width="46px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Project"
SortExpression="project">
<headerstyle width="110px" />
<EditItemTemplate>
<aspropDownList ID="projbox" runat="server"
DataSourceID="Projectrd"
DataTextField="name" DataValueField="Projectid"
width="106px"
SelectedValue='<%# Bind("project", "{0}") %>'
appenddatabounditems="true">
<asp:ListItem Value="0">Select</asp:ListItem>
</aspropDownList>
<asp:SqlDataSource ID="Projectrd" runat="server"
ConnectionString="<%$
ConnectionStringsOTracking %>" SelectCommand="proj"
SelectCommandType="StoredProcedure"></asp:SqlDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="projlbl" runat="server" Text='<%#
Bind("project") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Unit Price"
SortExpression="UnitPrice">
<headerstyle width="79px" />
<EditItemTemplate>
<asp:TextBox ID="unitpricebox" width="75px"
runat="server"
Text='<%# Bind("UnitPrice", "{0:N}") %>'
Height="22px"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="unitpricelbl" runat="server"
Text='<%# Bind("UnitPrice") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Total" SortExpression="Total">
<headerstyle width="79px" />
<EditItemTemplate>
<asp:TextBox ID="Totalbox" runat="server"
BackColor="Silver"
BorderColor="Black" Text='<%# Bind("Total",
"{0:N}") %>' ReadOnly="True"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="totallbl" runat="server" Text='<%#
Bind("Total") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerStyle BackColor="#F7F7DE" ForeColor="Black"
HorizontalAlign="Right" />
<SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True"
ForeColor="White" />
<HeaderStyle Wrap="False" BorderColor="Black" BorderStyle="Solid"
BorderWidth="1px" />
<AlternatingRowStyle BackColor="#C7C7C7" />
</asp:GridView>
VB.Net Code
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="AddPOLines" TypeName="POTracker.Purchase_Order"
InsertMethod="AddPOLines"
EnableCaching="True" UpdateMethod="AddPOLines">
<UpdateParameters>
<asparameter Name="Quantity" Type="Int32" />
<asparameter Name="billto" Type="Int32" />
<asparameter Name="description" Type="String" />
<asparameter Name="type" Type="String" />
<asparameter Name="project" Type="Int32" />
<asparameter Name="UnitPrice" Type="Double" />
<asparameter Name="total" Type="Double" />
</UpdateParameters>
<InsertParameters>
<asparameter Name="Quantity" Type="Int32" />
<asparameter Name="billto" Type="Int32" />
<asparameter Name="description" Type="String" />
<asparameter Name="type" Type="String" />
<asparameter Name="project" Type="Int32" />
<asparameter Name="UnitPrice" Type="Double" />
<asparameter Name="total" Type="Double" />
</InsertParameters>
</asp:ObjectDataSource>
<asp:Button ID="add" runat="server" Text="New Row" />
VB.Net
Imports System.Security
Imports System.Security.Principal.WindowsIdentity
Imports Microsoft.ApplicationBlocks
Partial Public Class create
Inherits System.Web.UI.Page
Private Sub pogrid_RowEditing(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewEditEventArgs) Handles pogrid.RowEditing
pogrid.EditIndex = e.NewEditIndex
End Sub
Private Sub pogrid_RowUpdated(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewUpdatedEventArgs) Handles pogrid.RowUpdated
pogrid.EditIndex = -1
If e.Exception IsNot Nothing Then
'Do something
End If
End Sub
Protected Sub add_Click(ByVal sender As Object, ByVal e As EventArgs)
Handles add.Click
ObjectDataSource1.Insert()
End Sub
End Class
VB.Net Class
Public Class Purchase_Order
Dim _polines As List(Of POLine) = New List(Of POLine)
Dim _poNumber As String = String.Empty
Public Property Number() As String
Get
Return _poNumber
End Get
Set(ByVal value As String)
_poNumber = value
End Set
End Property
Public Function AddPOLines(ByVal Quantity As Integer, ByVal billto As
Integer, ByVal description As String, ByVal type As String, ByVal project As
Integer, ByVal UnitPrice As Double, ByVal total As Double) As POLine
Dim newline As POLine = Me.AddPOLines
newline.Quantity = Quantity
newline.Billto = billto
newline.Description = description
newline.Type = type
newline.project = project
newline.UnitPrice = UnitPrice
newline.Total = total
Return newline
End Function
'Public Function upPOLines(ByVal Quantity As Integer, ByVal billto As
Integer, ByVal description As String, ByVal type As String, ByVal project As
Integer, ByVal UnitPrice As Double, ByVal unittotal As Double) As POLine
' Dim updateln As POLine = Me.upPOLines
' Quantity = updateln.Quantity
' billto = updateln.Billto
' description = updateln.Description
' type = updateln.Type
' project = updateln.project
' UnitPrice = updateln.UnitPrice
' unittotal = updateln.Total
' Return updateln
'End Function
Public Function AddPOLines() As POLine
Dim newline As POLine = New POLine
_polines.Add(newline)
Return newline
End Function
'Public Function upPOLines() As POLine
' Dim updateln As POLine = New POLine
' _polines.Add(updateln)
' Return updateln
'End Function
Public Property POLines() As List(Of POLine)
Get
Return _polines
End Get
Set(ByVal value As List(Of POLine))
_polines = value
End Set
End Property
End Class
Public Class POLine
Dim _quantity As Integer
Dim _billto As Integer
Dim _description As String
Dim _type As Integer
Dim _projectitem As Integer
Dim _unitprice As Decimal
Dim _total As Decimal
Public Property Quantity() As Integer
Get
Return _quantity
End Get
Set(ByVal value As Integer)
_quantity = value
End Set
End Property
Public Property Billto() As Integer
Get
Return _billto
End Get
Set(ByVal value As Integer)
_billto = value
End Set
End Property
Public Property Description() As String
Get
Return _description
End Get
Set(ByVal value As String)
_description = value
End Set
End Property
Public Property Type() As Integer
Get
Return _type
End Get
Set(ByVal value As Integer)
_type = value
End Set
End Property
Public Property project() As Integer
Get
Return _projectitem
End Get
Set(ByVal value As Integer)
_projectitem = value
End Set
End Property
Public Property UnitPrice() As Decimal
Get
Return _unitprice
End Get
Set(ByVal value As Decimal)
_unitprice = value
End Set
End Property
Public Property Total() As Decimal
Get
Return _total
End Get
Set(ByVal value As Decimal)
_total = value
End Set
End Property
End Class
textboxes and dropdownlists the data wont stick. My object data source dumps
to a class but after the update the grid should read from the class as well.
After the update button is clicked all the data passes through the class like
it should and doesn't throw any errors. After all the data moves through the
class and the page reloads, it looks like it's adding a new line. I am new to
using "OOP" so my class's may be a bit off. I was told by a co-worker that i
should have an update method and not use the same insert method? As this may
be the issue, if someone could please take look at my class and show me what
an actual update method is. The commented portion of my class below was my
attempt at building an update method.
All help is greatly appreciated. Thanks!
ASPX code
<asp:GridView ID="pogrid" runat="server"
AutoGenerateColumns="False"
style="margin-left: 0px; margin-right: 0px; margin-bottom: 0px"
Width="1020px" BorderColor="Black" BorderStyle="Solid"
CellPadding="4"
BackColor="White" BorderWidth="1px"
ForeColor="Black"
GridLines="Vertical" HorizontalAlign="Center"
BackImageUrl="~/POTracking/images/buttontemplate.jpg"
Font-Names="Calibri" DataSourceID="ObjectDataSource1">
<FooterStyle BackColor="#CCCC99" />
<RowStyle BackColor="#E1E3EC" BorderColor="Black"
BorderStyle="Solid"
BorderWidth="1px" Font-Names="Calibri"
HorizontalAlign="Center" />
<Columns>
<asp:CommandField ButtonType="Image"
DeleteImageUrl="~/POTracking/images/Deletesmall.png"
ShowCancelButton="False" ShowDeleteButton="True"
ShowEditButton="True"
EditImageUrl="~/POTracking/images/Document.png"
ShowInsertButton="True"
UpdateImageUrl="~/POTracking/images/Sync.png" />
<asp:TemplateField HeaderText="QTY" SortExpression="Quantity">
<headerstyle width="36px" />
<EditItemTemplate>
<asp:TextBox ID="qtybox" runat="server" width="32px"
Text='<%# Bind("Quantity", "{0}")
%>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="qtylbl" runat="server" Text='<%#
Bind("Quantity") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle Width="40px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Bill To"
SortExpression="Billto" >
<headerstyle width="85px" />
<EditItemTemplate>
<aspropDownList ID="billtobox" runat="server"
DataSourceID="billto"
DataTextField="name" datavaluefield="id"
Width="79px"
SelectedValue='<%# Bind("Billto", "{0}") %>'
appenddatabounditems="true">
<asp:ListItem Value="0">Select</asp:ListItem>
</aspropDownList>
<asp:SqlDataSource ID="billto" runat="server"
ConnectionString="<%$
ConnectionStringsOTracking %>" SelectCommand="billto"
SelectCommandType="StoredProcedure"></asp:SqlDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="billtolbl" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Description"
SortExpression="Description">
<headerstyle width="454px" />
<EditItemTemplate>
<asp:TextBox ID="descbox" width="450px"
runat="server" Text='<%# Bind("Description") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="desclbl" runat="server" Text='<%#
Bind("Description") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Type" SortExpression="Type">
<headerstyle width="44px" />
<EditItemTemplate>
<aspropDownList ID="typebox" runat="server"
width="40px" appenddatabounditems="True"
DataSourceID="seltype" DataTextField='typeabbr'
DataValueField="id" SelectedValue='<%#
Bind("Type", "{0}") %>'>
<asp:ListItem Value="0">Select</asp:ListItem>
</aspropDownList>
<asp:SqlDataSource ID="seltype" runat="server"
ConnectionString="<%$
ConnectionStringsOTracking %>" SelectCommand="type"
SelectCommandType="StoredProcedure"></asp:SqlDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="typelbl" runat="server" Text='<%#
Bind("Type") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle Width="46px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Project"
SortExpression="project">
<headerstyle width="110px" />
<EditItemTemplate>
<aspropDownList ID="projbox" runat="server"
DataSourceID="Projectrd"
DataTextField="name" DataValueField="Projectid"
width="106px"
SelectedValue='<%# Bind("project", "{0}") %>'
appenddatabounditems="true">
<asp:ListItem Value="0">Select</asp:ListItem>
</aspropDownList>
<asp:SqlDataSource ID="Projectrd" runat="server"
ConnectionString="<%$
ConnectionStringsOTracking %>" SelectCommand="proj"
SelectCommandType="StoredProcedure"></asp:SqlDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="projlbl" runat="server" Text='<%#
Bind("project") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Unit Price"
SortExpression="UnitPrice">
<headerstyle width="79px" />
<EditItemTemplate>
<asp:TextBox ID="unitpricebox" width="75px"
runat="server"
Text='<%# Bind("UnitPrice", "{0:N}") %>'
Height="22px"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="unitpricelbl" runat="server"
Text='<%# Bind("UnitPrice") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Total" SortExpression="Total">
<headerstyle width="79px" />
<EditItemTemplate>
<asp:TextBox ID="Totalbox" runat="server"
BackColor="Silver"
BorderColor="Black" Text='<%# Bind("Total",
"{0:N}") %>' ReadOnly="True"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="totallbl" runat="server" Text='<%#
Bind("Total") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerStyle BackColor="#F7F7DE" ForeColor="Black"
HorizontalAlign="Right" />
<SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True"
ForeColor="White" />
<HeaderStyle Wrap="False" BorderColor="Black" BorderStyle="Solid"
BorderWidth="1px" />
<AlternatingRowStyle BackColor="#C7C7C7" />
</asp:GridView>
VB.Net Code
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="AddPOLines" TypeName="POTracker.Purchase_Order"
InsertMethod="AddPOLines"
EnableCaching="True" UpdateMethod="AddPOLines">
<UpdateParameters>
<asparameter Name="Quantity" Type="Int32" />
<asparameter Name="billto" Type="Int32" />
<asparameter Name="description" Type="String" />
<asparameter Name="type" Type="String" />
<asparameter Name="project" Type="Int32" />
<asparameter Name="UnitPrice" Type="Double" />
<asparameter Name="total" Type="Double" />
</UpdateParameters>
<InsertParameters>
<asparameter Name="Quantity" Type="Int32" />
<asparameter Name="billto" Type="Int32" />
<asparameter Name="description" Type="String" />
<asparameter Name="type" Type="String" />
<asparameter Name="project" Type="Int32" />
<asparameter Name="UnitPrice" Type="Double" />
<asparameter Name="total" Type="Double" />
</InsertParameters>
</asp:ObjectDataSource>
<asp:Button ID="add" runat="server" Text="New Row" />
VB.Net
Imports System.Security
Imports System.Security.Principal.WindowsIdentity
Imports Microsoft.ApplicationBlocks
Partial Public Class create
Inherits System.Web.UI.Page
Private Sub pogrid_RowEditing(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewEditEventArgs) Handles pogrid.RowEditing
pogrid.EditIndex = e.NewEditIndex
End Sub
Private Sub pogrid_RowUpdated(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewUpdatedEventArgs) Handles pogrid.RowUpdated
pogrid.EditIndex = -1
If e.Exception IsNot Nothing Then
'Do something
End If
End Sub
Protected Sub add_Click(ByVal sender As Object, ByVal e As EventArgs)
Handles add.Click
ObjectDataSource1.Insert()
End Sub
End Class
VB.Net Class
Public Class Purchase_Order
Dim _polines As List(Of POLine) = New List(Of POLine)
Dim _poNumber As String = String.Empty
Public Property Number() As String
Get
Return _poNumber
End Get
Set(ByVal value As String)
_poNumber = value
End Set
End Property
Public Function AddPOLines(ByVal Quantity As Integer, ByVal billto As
Integer, ByVal description As String, ByVal type As String, ByVal project As
Integer, ByVal UnitPrice As Double, ByVal total As Double) As POLine
Dim newline As POLine = Me.AddPOLines
newline.Quantity = Quantity
newline.Billto = billto
newline.Description = description
newline.Type = type
newline.project = project
newline.UnitPrice = UnitPrice
newline.Total = total
Return newline
End Function
'Public Function upPOLines(ByVal Quantity As Integer, ByVal billto As
Integer, ByVal description As String, ByVal type As String, ByVal project As
Integer, ByVal UnitPrice As Double, ByVal unittotal As Double) As POLine
' Dim updateln As POLine = Me.upPOLines
' Quantity = updateln.Quantity
' billto = updateln.Billto
' description = updateln.Description
' type = updateln.Type
' project = updateln.project
' UnitPrice = updateln.UnitPrice
' unittotal = updateln.Total
' Return updateln
'End Function
Public Function AddPOLines() As POLine
Dim newline As POLine = New POLine
_polines.Add(newline)
Return newline
End Function
'Public Function upPOLines() As POLine
' Dim updateln As POLine = New POLine
' _polines.Add(updateln)
' Return updateln
'End Function
Public Property POLines() As List(Of POLine)
Get
Return _polines
End Get
Set(ByVal value As List(Of POLine))
_polines = value
End Set
End Property
End Class
Public Class POLine
Dim _quantity As Integer
Dim _billto As Integer
Dim _description As String
Dim _type As Integer
Dim _projectitem As Integer
Dim _unitprice As Decimal
Dim _total As Decimal
Public Property Quantity() As Integer
Get
Return _quantity
End Get
Set(ByVal value As Integer)
_quantity = value
End Set
End Property
Public Property Billto() As Integer
Get
Return _billto
End Get
Set(ByVal value As Integer)
_billto = value
End Set
End Property
Public Property Description() As String
Get
Return _description
End Get
Set(ByVal value As String)
_description = value
End Set
End Property
Public Property Type() As Integer
Get
Return _type
End Get
Set(ByVal value As Integer)
_type = value
End Set
End Property
Public Property project() As Integer
Get
Return _projectitem
End Get
Set(ByVal value As Integer)
_projectitem = value
End Set
End Property
Public Property UnitPrice() As Decimal
Get
Return _unitprice
End Get
Set(ByVal value As Decimal)
_unitprice = value
End Set
End Property
Public Property Total() As Decimal
Get
Return _total
End Get
Set(ByVal value As Decimal)
_total = value
End Set
End Property
End Class