当应该更新一条记录时更新整个表 [英] Update the entire table when it should update one record
问题描述
我有一个名为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屋!