2012-01-16 85 views
1

我已经扩展了asp.net成员包括使用userid GUID作为外键在一个单独的表额外的用户信息(详细地址,电话号码等),DB信息。获取有关当前登录的用户到DetailsView控件

我想创建一个DetailsView在当前登录的用户可以查看他们的个人资料并进行更新。我遵循ASP.NET上的Scott Mitchell tutorial,但它不适用于我。虽然我没有收到任何错误,但我没有看到任何数据。

我已经建立了标签在ASPX代码来显示正在被正确地返回的用户ID(它们是),并且如果我运行在一个查询窗口的手动SELECT查询时,DB检索结果。

,因为我想获得一个基本的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

步骤一遍。设置参数时,“providerIdKeyString”是否有值? – Aaron 2012-01-16 14:29:08

+0

是的,它返回了预期的UserId – bjh 2012-01-17 13:44:13

+0

有什么其他想法尝试?奇怪的是,我没有得到一个错误,但没有得到任何结果。如果我无法让DetailsView行为起来,我将不得不使用表单或向导。 – bjh 2012-01-20 10:56:26

回答

1

OK,问题是在SelectParameters。我改变类型为“字符串”,我得到了我的结果!对不起,但我不知道为什么。欢迎进一步评论。 感谢所有查看和贡献的人。

相关问题