2009-10-04 65 views
0

嗨,我有一个gridview,链接到sqldatasource。我添加了一个存储过程以从多个表中删除,然后启用删除GridView智能标记。使用存储过程从gridview删除

当我点击删除按钮,我收到一条错误消息,“对象必须实现IConvertible”。我读过这是将参数传递给存储过程的问题,可能是传递了错误的数据类型。林不知道我是否将参数传递给存储过程。参数应该是gridviews datakeyname,在这种情况下它是“UserId”。

存储过程的工作我精细管理工作室,所以我认为这仅仅是传递的参数(或可能不被通过)

我是不是要代码后面的代码要传递给参数存储过程?

<asp:SqlDataSource ID="selectUsers" runat="server" ConnectionString="<%$ ConnectionStrings:CASSFConnectionString %>" 
     SelectCommand="SELECT aspnet_Membership.UserId, aspnet_Membership.IsLockedOut, aspnet_Membership.Email, aspnet_Membership.CreateDate, aspnet_Membership.LastLoginDate, aspnet_Membership.LastPasswordChangedDate, aspnet_Profile.PropertyValuesString, aspnet_Users.UserName, aspnet_Membership.IsApproved FROM aspnet_Membership INNER JOIN aspnet_Profile ON aspnet_Membership.UserId = aspnet_Profile.UserId INNER JOIN aspnet_Users ON aspnet_Membership.UserId = aspnet_Users.UserId AND aspnet_Profile.UserId = aspnet_Users.UserId WHERE (CONVERT (nvarchar(256), aspnet_Profile.PropertyValuesString) = @district)" 
     DeleteCommand="DeleteUsers" DeleteCommandType="StoredProcedure" UpdateCommand="UPDATE [aspnet_Membership] SET [IsApproved] = @IsApproved, [Email] = @email, [IsLockedOut] = @IsLockedOut WHERE [aspnet_Membership].[UserId] = @UserID"> 
     <SelectParameters> 
      <asp:ControlParameter ControlID="DropDownList1" Name="district" PropertyName="SelectedValue" /> 
     </SelectParameters> 
     <DeleteParameters> 
      <asp:Parameter Name="UserId" Type="String" /> 
     </DeleteParameters> 
     <UpdateParameters> 
      <asp:Parameter Name="IsApproved" /> 
      <asp:Parameter Name="email" /> 
      <asp:Parameter Name="IsLockedOut" /> 
      <asp:Parameter Name="UserID" /> 
     </UpdateParameters> 
    </asp:SqlDataSource> 
+0

你应该能够在sql数据源的删除参数中指定用户标识。一些代码将有助于说明您的问题。 – Phaedrus

+0

谢谢。我已经添加了我的SqlDataSource。如果使用存储过程,我可以在这里设置参数。 – Tones

回答

0

找到了答案,我只是从删除参数中删除Type="String"