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;
}
これを1回ステップ実行します。パラメータを設定すると、 "providerIdKeyString"に値がありますか? – Aaron
はい、それは予想されるUserIdを返しました – bjh
何を試してみましょう他のアイデア?奇妙なことですが、私はエラーは出ませんが、何の結果も得られません。 DetailsViewを動作させることができない場合は、フォームまたはウィザードを使用する必要があります。 – bjh