当应该更新一条记录时更新整个表 [英] Update the entire table when it should update one record

查看:101
本文介绍了当应该更新一条记录时更新整个表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个名为UserProfile.aspx的网络表单.用户登录后,他们可以在UserProfile上查看和编辑其详细信息.我使用SqlDatasource并与DetailsView绑定.在detailsview中,它从2个表中检索数据; aspnet_Membership和Details表.

以下是我获得当前登录用户(在UserProfile.aspx.cs内部)的代码:

I have a webform called UserProfile.aspx. After user logged-in, they can view and edit their particulars at UserProfile. I used SqlDatasource and was bind with DetailsView. In the detailsview, it retrieved data from 2 table; aspnet_Membership and Details table respectively.

Following is the code which I get the current logged-in user(inside UserProfile.aspx.cs):

protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
    // Get a reference to the currently logged on user
    MembershipUser currentUser = Membership.GetUser();

    // Determine the currently logged on user's UserId value
    // Assign the currently logged on user's UserId to the @UserId parameter
    e.Command.Parameters["@UserId"].Value = currentUser.ProviderUserKey.ToString();
}



我能够查看用户的信息,但是当我编辑信息并检入数据库时​​,表中的所有记录都使用新值(而不是该特定行)进行了更新.

我对此进行了研究,并且知道通过声明WHERE子句,只有那些满足条件的记录才会更新该属性.我已经在更新语句中添加了WHERE子句,但似乎不起作用.

以下是UserProfile.aspx中的代码:



I am able to view the user''s information, but when I edit the information and check in the database, all the record in the table was updated with the new values, instead of that particular row.

I had researched on this, and knowing that by stating the WHERE clause, only those records that satisfy the condition will have that attribute updated. I had add in the WHERE clause to my update statement, but it seem not to be working.

The following is the code in UserProfile.aspx:

<asp:SqlDataSource ID="SqlDataSource1" runat="server"

            ConnectionString="<%$ ConnectionStrings:ASPNETDBConnectionString1 %>"



            SelectCommand="SELECT Details.UserId, aspnet_Membership.Password, aspnet_Membership.Email, Details.CustName, Details.CustNum, Details.CustRole, Details.CustStatus, Details.PName, Details.PEmail, Details.PRole, Details.WedDate FROM Details INNER JOIN aspnet_Membership ON Details.UserId = aspnet_Membership.UserId WHERE (Details.UserId = @UserId)"

            onselecting="SqlDataSource1_Selecting"

            UpdateCommand="UPDATE Details SET CustName = @CustName, CustNum = @CustNum, CustRole = @CustRole, CustStatus = @CustStatus, PName = @PName, PEmail = @PEmail, PRole = @PRole, WedDate = @WedDate WHERE [UserId] = @UserId">

            <SelectParameters>
                <asp:Parameter Name="UserId" type="String" />
            </SelectParameters>

            <UpdateParameters>
                <asp:Parameter Name="UserId" type="String" />
                <asp:Parameter Name="CustName" type="String"  />
                <asp:Parameter Name="CustNum" type="String" />
                <asp:Parameter Name="CustRole" type="String" />
                <asp:Parameter Name="CustStatus" type="String" />
                <asp:Parameter Name="PName" type="String" />
                <asp:Parameter Name="PEmail" type="String"  />
                <asp:Parameter Name="PRole" type="String"  />
                <asp:Parameter Name="WedDate" type="String" />
                <asp:Parameter Name="Password" type="String"  />
                <asp:Parameter Name="Email" type="String" />
            </UpdateParameters>

        </asp:SqlDataSource>

推荐答案

ConnectionStrings:ASPNETDBConnectionString1 %> " =" 选择Details.UserId,aspnet_Membership.Password,aspnet_Membership.Email,Details.CustName,Details.CustNum,Details.CustRole,Details.CustStatus,Details.PName,Details.PEmail, Details.PRole,Details.WedDate从详细信息内部联接aspnet_Membership ON Details.UserId = aspnet_Membership.UserId WHERE(Details.UserId = @UserId)" =" SqlDataSource1_Selecting" =" 更新详细信息SET CustName = @ CustName,CustNum = @ CustNum,CustRole = @ CustRole,CustStatus = @ CustStatus,PName = @ PName,PEmail = @ PEmail,PRole = @PRole ,WedDate = @WedDate WHERE [UserId] = @UserId" < SelectParameters > < asp:Parameter 名称 =" 类型 字符串" / < /SelectParameters > < UpdateParameters > < asp:Parameter 名称 =" 类型 字符串" / < asp:Parameter 名称 =" 类型 字符串" > < asp:Parameter 名称 =" 类型 字符串" / < asp:Parameter 名称 =" 类型 字符串" / < asp:Parameter 名称 =" 类型 字符串" / < asp:Parameter 名称 =" 类型 字符串" / < asp:Parameter 名称 =" 类型 字符串" > < asp:Parameter 名称 =" 类型 字符串" > < asp:Parameter 名称 =" 类型 字符串" / < asp:Parameter 名称 =" 类型 字符串" > < asp:Parameter 名称 =" 类型 字符串" / < /UpdateParameters > < /asp:SqlDataSource >
ConnectionStrings:ASPNETDBConnectionString1 %>" SelectCommand="SELECT Details.UserId, aspnet_Membership.Password, aspnet_Membership.Email, Details.CustName, Details.CustNum, Details.CustRole, Details.CustStatus, Details.PName, Details.PEmail, Details.PRole, Details.WedDate FROM Details INNER JOIN aspnet_Membership ON Details.UserId = aspnet_Membership.UserId WHERE (Details.UserId = @UserId)" onselecting="SqlDataSource1_Selecting" UpdateCommand="UPDATE Details SET CustName = @CustName, CustNum = @CustNum, CustRole = @CustRole, CustStatus = @CustStatus, PName = @PName, PEmail = @PEmail, PRole = @PRole, WedDate = @WedDate WHERE [UserId] = @UserId"> <SelectParameters> <asp:Parameter Name="UserId" type="String" /> </SelectParameters> <UpdateParameters> <asp:Parameter Name="UserId" type="String" /> <asp:Parameter Name="CustName" type="String" /> <asp:Parameter Name="CustNum" type="String" /> <asp:Parameter Name="CustRole" type="String" /> <asp:Parameter Name="CustStatus" type="String" /> <asp:Parameter Name="PName" type="String" /> <asp:Parameter Name="PEmail" type="String" /> <asp:Parameter Name="PRole" type="String" /> <asp:Parameter Name="WedDate" type="String" /> <asp:Parameter Name="Password" type="String" /> <asp:Parameter Name="Email" type="String" /> </UpdateParameters> </asp:SqlDataSource>


在网格视图中,设置DataKeyNames ="UserId"属性

然后删除UserId参数的类型

In your grid view set DataKeyNames="UserId" property

and then remove type of UserId parameter

<UpdateParameters>
      <asp:Parameter Name="UserId" />
      <asp:Parameter Name="CustName" type="String"  />
      <asp:Parameter Name="CustNum" type="String" />
      <asp:Parameter Name="CustRole" type="String" />
      <asp:Parameter Name="CustStatus" type="String" />
      <asp:Parameter Name="PName" type="String" />
      <asp:Parameter Name="PEmail" type="String"  />
      <asp:Parameter Name="PRole" type="String"  />
      <asp:Parameter Name="WedDate" type="String" />
      <asp:Parameter Name="Password" type="String"  />
      <asp:Parameter Name="Email" type="String" />
  </UpdateParameters>


这篇关于当应该更新一条记录时更新整个表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆