dyarosh
asked on
Trouble Setting Insert Parameters in DataGrid View in ASP.Net
I am trying to code an Insert from a DataGridView and I'm not setting the Insert Parameters correctly and can't figure out why. The way it is currently coded, the new record is being added but not with the data that I entered (it is blank). When debugging, the data is in the fields that I am using to set the parameters. Here is the code and GridView Definition. Any help is appreciated.
DataGridView
================
<asp:Panel ID="Panel1" runat="server" CssClass="left_padding15">
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AutoGenerateColumns="False" CellPadding="5" CellSpacing="5"
DataKeyNames="StaffID" DataSourceID="StaffDataSource" ShowFooter="True">
<Columns>
<asp:TemplateField HeaderText="Sort Order" SortExpression="SortOrder">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("SortOrder") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="newSortOrderTB" runat="server"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("SortOrder") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Position" SortExpression="StaffPosition">
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("StaffPosition") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="NewStaffPositionTB" runat="server" Width="212px"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("StaffPosition") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Staff Member" SortExpression="StaffMember">
<EditItemTemplate>
<asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("StaffMember") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="NewStaffMemberTB" runat="server" Width="227px"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Bind("StaffMember") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="StaffID" HeaderText="StaffID" InsertVisible="False"
ReadOnly="True" SortExpression="StaffID" Visible="False" />
<asp:TemplateField ShowHeader="False">
<EditItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True"
CommandName="Update" Text="Update"></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False"
CommandName="Cancel" Text="Cancel"></asp:LinkButton>
</EditItemTemplate>
<FooterTemplate>
<asp:Button ID="AddNew" runat="server" CausesValidation="false"
CommandName="Insert" Text="Add New" OnClick="AddNew_Click"></asp:Button>
</FooterTemplate>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False"
CommandName="Edit" Text="Edit"></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False"
CommandName="Delete" Text="Delete"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:AccessDataSource ID="StaffDataSource" runat="server"
DataFile="~/App_Data/ABVM.mdb"
DeleteCommand="DELETE FROM [Staff] WHERE [StaffID] = ?"
InsertCommand="INSERT INTO [Staff] ([SortOrder], [StaffPosition], [StaffMember]) VALUES (?, ?, ?)"
SelectCommand="SELECT [SortOrder], [StaffPosition], [StaffMember], [StaffID] FROM [Staff] ORDER BY [SortOrder]"
UpdateCommand="UPDATE [Staff] SET [SortOrder] = ?, [StaffPosition] = ?, [StaffMember] = ? WHERE [StaffID] = ?">
<DeleteParameters>
<asp:Parameter Name="StaffID" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="SortOrder" Type="Int16" />
<asp:Parameter Name="StaffPosition" Type="String" />
<asp:Parameter Name="StaffMember" Type="String" />
<asp:Parameter Name="StaffID" Type="Int32" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="NewSortOrder" Type="Int16" />
<asp:Parameter Name="NewStaffPosition" Type="String" />
<asp:Parameter Name="NewStaffMember" Type="String" />
</InsertParameters>
</asp:AccessDataSource>
</asp:Panel>
CODE
=======
Protected Sub StaffDataSource_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceCommandEventArgs) Handles StaffDataSource.Inserting
Dim SO As TextBox = GridView1.FooterRow.FindControl("NewSortOrderTB")
Dim SP As TextBox = GridView1.FooterRow.FindControl("NewStaffPositionTB")
Dim SM As TextBox = GridView1.FooterRow.FindControl("NewStaffMemberTB")
StaffDataSource.InsertParameters("NewSortOrder").DefaultValue = CInt(SO.Text)
StaffDataSource.InsertParameters("NewStaffPosition").DefaultValue = SP.Text
StaffDataSource.InsertParameters("NewStaffMember").DefaultValue = SM.Text
StaffDataSource.DataBind()
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
StaffDataSource.Insert()
End Sub
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER