2010-07-12 90 views
1

所以下面是我的代碼。我遇到問題的地方是我的綁定文本字段沒有按預期將信息發送回UpdateCommand。如果我用硬編碼文本替換任何@variables,則更新按預期發生。所以如果我用'25'代替@RegID,那麼我的記錄已經成功更新,但是在更新處理時所有其他@variables都是NULL,所以空白。我的錯誤在哪裏?ASP.NET FormView更新失敗

  <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 [email protected], 
      [email protected], 
      [email protected], 
      [email protected], 
      [email protected], 
      [email protected] 
      WHERE ([email protected])" /> 
+0

你能手動換行的代碼行與文本框,他們切斷,我沒有足夠的聲譽編輯您的帖子。 – Kendrick 2010-07-12 15:35:19

+0

我下次會做得更好。目前問題已解決。謝謝。 – Jeff 2010-07-12 16:24:21

回答

1

您沒有任何parameters定義。

例子:

<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 [email protected], [email protected] 
        WHERE [email protected]" 
    DeleteCommand="DELETE Employees WHERE [email protected]" 

    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> 
+0

找到了答案!謝謝(你的)信息。我得到了從那個鏈接的每一頁,但從來沒有絆倒。我必須確保閱讀'使用OleDb和Odbc提供程序參數'部分,因爲我也使用MySql進行數據庫。這也改變了一切。 – Jeff 2010-07-12 16:26:11