views:

30

answers:

1

So below is my code. Where I'm having the issue is my bound text fields are not sending the information back to the UpdateCommand as expected. If I replace any of the @variables with hard coded text then the update occurs as expected. So if I replace @RegID with '25' then my record is successfully updated but blank as all other @variables were NULL at time of update processing. Where's my error?

         <asp:FormView ID="formView" DataSourceID="Reg" runat="server" DataKeyNames="RegID" AllowPaging="true">

        <ItemTemplate>
            <h3 style="font-size:14px;"><%#Eval("Org") %></h3>
            <table border="0">
                <tr class="RowHighlight">
                    <td>Name:</td><td><%#Eval("Name") %></td>
                </tr>
                <tr>
                    <td>Phone Number:</td><td><%#Eval("PhoneNumber") %></td>
                </tr>
                <tr class="RowHighlight">
                    <td>Email Address:</td><td><%#Eval("EmailAddress")%></td>
                </tr>
                <tr>
                    <td>Address:</td><td><%#Eval("Address") %></td>
                </tr>
                <tr class="RowHighlight">
                    <td>Purchase Date:</td><td><%#Eval("MonthOfPurchase") + " " + Eval("YearOfPurchase")%></td>
                </tr>
                <tr>
                    <td>Notes:</td><td><%#Eval("Notes") %></td>
                </tr>
                <tr>
                    <td><asp:LinkButton ID="btnEdit" Text="Edit Details" runat="server" CommandName="Edit" /></td>
                </tr>
            </table>
        </ItemTemplate>

        <EditItemTemplate>
            <h3 style="font-size:14px;"><%#Eval("Org") %></h3>
            <table border="0">
                <tr>
                    <td>ID</td><td><%#Eval("RegID")%></td>
                </tr>
                <tr class="RowHighlight">
                    <td>Name:</td><td><asp:TextBox ID="txtName" runat="server" Width="100%" Text='<%# Bind("Name") %>' /></td>
                </tr>
                <tr>
                    <td>Phone Number:</td><td><asp:TextBox ID="txtPhoneNumber" runat="server" Width="100%" Text='<%# Bind("PhoneNumber") %>' /></td>
                </tr>
                <tr class="RowHighlight">
                    <td>Email Address:</td><td><asp:TextBox ID="txtEmailAddress" runat="server" Width="100%" Text='<%# Bind("EmailAddress") %>' /></td>
                </tr>
                <tr>
                    <td>Address:</td><td><asp:TextBox ID="txtAddress" runat="server" Width="100%" Text='<%# Bind("Address") %>' /></td>
                </tr>
                <tr class="RowHighlight">
                    <td>Month Of Purchase:</td><td><asp:TextBox ID="txtMonthOfPurchase" runat="server" Width="100%" Text='<%# Bind("MonthOfPurchase") %>' /></td>
                </tr>
                <tr>
                    <td>Year Of Purchase:</td><td><asp:TextBox ID="txtYearOfPurchase" runat="server" Width="100%" Text='<%# Bind("YearOfPurchase") %>' /></td>
                </tr>
                <tr class="RowHighlight">
                    <td>Notes:</td><td><%#Eval("Notes") %></td>
                </tr>
                <tr>
                    <td><asp:LinkButton ID="btnSave" Text="Save Changes" runat="server" CausesValidation="true" CommandName="Update" /></td>
                    <td><asp:LinkButton ID="btnCancel" Text="Cancel" runat="server" CommandName="Cancel" /></td>
                </tr>
            </table>
        </EditItemTemplate>

        </asp:FormView>

        <asp:SqlDataSource ProviderName="System.Data.Odbc" ID="Reg" runat="server"
            ConnectionString="DRIVER={MySQL ODBC 3.51 Driver}; SERVER=<SERVER_NAME>; PORT=3306; DATABASE=<DATABASE> UID=<USERID>; PWD=<PASSWORD>; OPTION=3;"

            SelectCommand="SELECT * FROM tblRegsitration 
            WHERE EmailSent=0 ORDER BY Org"

            UpdateCommand="UPDATE tblRegsitration SET Name=@Name, 
            PhoneNumber=@PhoneNumber, 
            EmailAddress=@EmailAddress,
            Address=@Address, 
            MonthOfPurchase=@MonthOfPurchase, 
            YearOfPurchase=@YearOfPurchase 
            WHERE (RegID=@RegID)" />
+1  A: 

You don't have any parameters defined.

Example:

<asp:sqlDataSource ID="EmployeeDetailsSqlDataSource" 
  SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID"

  InsertCommand="INSERT INTO Employees(LastName, FirstName) VALUES (@LastName, @FirstName); 
                 SELECT @EmpID = SCOPE_IDENTITY()"
  UpdateCommand="UPDATE Employees SET LastName=@LastName, FirstName=@FirstName 
                   WHERE EmployeeID=@EmployeeID"
  DeleteCommand="DELETE Employees WHERE EmployeeID=@EmployeeID"

  ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>"
  OnInserted="EmployeeDetailsSqlDataSource_OnInserted"
  RunAt="server">

  <SelectParameters>
    <asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" />
  </SelectParameters>

  <InsertParameters>
    <asp:Parameter Name="EmpID" Direction="Output" Type="Int32" DefaultValue="0" />
  </InsertParameters>

</asp:sqlDataSource>
rick schott
Answer found! Thanks for the info. I got to every page linked from that one but never tripped over that. I had to make sure to read the 'Using Parameters with the OleDb and Odbc Providers' section as I'm using MySql for databasing as well. That changes things, too.
Jeff