2012-01-16 10 views
1

UserId GUIDを外部キーとして使用して別のテーブルに追加のユーザー情報(アドレスの詳細、電話番号など)を含めるようにasp.netメンバシップを拡張しました。現在ログインしているユーザーに関するDB情報をDetailsViewに取得する

現在ログインしているユーザーがプロファイルを確認して更新できるように、DetailsViewを作成しようとしています。私はASP.NETのScott Mitchell tutorialに従っていますが、私にとってはうまくいかないでしょう。私は間違いはないが、私は何のデータも見ていない。

ユーザーIDが正しく返されていることを示すラベルをaspxコードに設定しています。クエリウィンドウで手動SELECTクエリを実行すると、DBは結果を取得します。

私は最初に動作する基本的なSELECT文を取得したいので、UPDATE文などは含んでいません。さらなるテストについてのアイデアは、感謝します、回避策、または目障りなエラー!おかげさまで

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回ステップ実行します。パラメータを設定すると、 "providerIdKeyString"に値がありますか? – Aaron

+0

はい、それは予想されるUserIdを返しました – bjh

+0

何を試してみましょう他のアイデア?奇妙なことですが、私はエラーは出ませんが、何の結果も得られません。 DetailsViewを動作させることができない場合は、フォームまたはウィザードを使用する必要があります。 – bjh

答えて

1

OK、問題がSelectParametersにありました。 Typeを "String"に変更しました。私は結果を得ました!申し訳ありませんが、理由はわかりません。さらなるコメントは大歓迎です。 閲覧して寄稿した皆様に感謝します。

関連する問題