2012-09-06 72 views
1

我有一个GridView,显示所有的注册用户和他们的一些信息,当你选择侧面的“select”链接时,它显示一个DetailsView以及与该用户有关的所有细节。选择正常工作并更新所选用户的详细信息视图,当我尝试编辑DetailsView时,它将更新数据库并在更改字段时填写所有用户更新的信息(例如,如果我更改了客户名字,每个人都注册会得到这个名字)。这是我对我的SqlDataSource的aspx代码:详情查看更新

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:ApplicationServices %>" OldValuesParameterFormatString="original_{0}" 
     SelectCommand="SELECT * FROM [UserProfile] ORDER BY [Email], [LastName], [Company]" 
     UpdateCommand="UPDATE [UserProfile] SET [LastName] = @LastName, [PartsList] = @PartsList, [UserName] = @UserName, [Question] = @Question, 
         [Answer] = @Answer, [Role] = @Role 
         WHERE [FirstName] = FirstName AND [Company] = Company"> 
      <UpdateParameters> 
       <asp:Parameter Name="FirstName" Type="String" /> 
       <asp:Parameter Name="LastName" Type="String" /> 
       <asp:Parameter Name="Company" Type="String" /> 
       <asp:Parameter Name="PartsList" Type="String" /> 
       <asp:Parameter Name="UserName" Type="String" /> 
       <asp:Parameter Name="Password" Type="String" /> 
       <asp:Parameter Name="Email" Type="String" /> 
       <asp:Parameter Name="Question" Type="String" /> 
       <asp:Parameter Name="Answer" Type="String" /> 
       <asp:Parameter Name="Role" Type="String" />      
      </UpdateParameters> 
    </asp:SqlDataSource> 
+0

你忘了'@'的名字和公司,需要' @ FirstName'和'@ Company' –

+0

谢谢,忽略了,但现在它不更新任何值(单个用户或整个表)。 –

+0

对不起,你需要'@ original_FirstName'和'@ original_Company' –

回答

0

你在你的Where参数忘记@original_

更改更新命令到:

UPDATE [UserProfile] SET [LastName] = @LastName, [PartsList] = @PartsList, [UserName] = @UserName, [Question] = @Question, [Answer] = @Answer, [Role] = @Role WHERE [FirstName] = @original_FirstName AND [Company] = @original_Company