我已经扩展了asp.net成员资格,使用UserId GUID作为外键在一个单独的表中包含其他用户信息(地址详细信息,电话号码等)。
我正在尝试创建一个DetailsView,其中当前登录的用户可以检查其配置文件并进行更新。我已经关注了ASP.NET上的Scott Mitchell tutorial但它对我不起作用。虽然我没有收到任何错误,但我没有看到任何数据。
我在aspx代码中设置了标签,以显示正确返回用户ID(它们是),如果我在查询窗口中运行手动SELECT查询,则DB会检索结果。
我没有包含UPDATE语句等因为我想先获得一个基本的SELECT语句。关于进一步测试的任何想法都将受到赞赏,变通方法或任何明显的错误! 感谢。
ASPX:
<asp:DetailsView ID="UserProfile" runat="server"
AutoGenerateRows="False" DataKeyNames="mem_number"
DataSourceID="UserProfileDataSource" DefaultMode="Edit"
onitemupdated="UserProfile_ItemUpdated">
<Fields>
<asp:BoundField DataField="lname" HeaderText="lname"
SortExpression="lname" />
<asp:BoundField DataField="addr1" HeaderText="addr1"
SortExpression="addr1" />
<asp:BoundField DataField="addr2" HeaderText="addr2"
SortExpression="mem_addr2" />
<asp:CommandField ShowEditButton="True" />
</Fields>
</asp:DetailsView>
<asp:SqlDataSource ID="UserProfileDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:wtcConnectionString %>"
SelectCommand="SELECT [lname], [addr1], [addr2] FROM [member] WHERE ([UserId] = @UserId)" OnSelecting="UserProfileDataSource_Selecting">
<SelectParameters>
<asp:Parameter Name="UserId" Type="Object" />
</SelectParameters>
</asp:SqlDataSource>
<asp:Label ID="Label3" runat="server" Text="currentuser"></asp:Label>
<br />
<asp:Label ID="Label4" runat="server" Text="providerIdKeyString"></asp:Label>
C#代码背后:
protected void UserProfileDataSource_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
string providerIdKeyString = string.Empty;
providerIdKeyString = currentuser.ProviderUserKey.ToString();
Label3.Text = currentuser.ToString();
Label4.Text = providerIdKeyString.ToString();
// Assign the currently logged on user's UserId to the @UserId parameter
e.Command.Parameters["@UserId"].Value = providerIdKeyString;
}
答案 0 :(得分:1)
好的,问题出在SelectParameters中。我将Type更改为“String”,我得到了我的结果!对不起,但我不知道为什么。欢迎进一步评论。 感谢所有观看和贡献的人。