1

私はasp.netを学んでいるので、これを行う方法が間違っている可能性があるので、より良い方法があれば教えてください。

ユーザーがログインすると、管理するすべてのサイトのドロップダウンリストが表示される「ポータル」があります。

ログインしたユーザーに基づいて作成したストアド プロシージャを使用して、ドロップダウン ボックスに入力したいと考えています。

ユーザーをデータベースに保存する組み込みの createuserWizard を使用しました。すべてのサイトを含む別のテーブルと、サイトとユーザーをリンクする 3 番目のテーブルを作成しました。

ドロップダウンリストはこちら

<code>

    <asp:DropDownList ID="DropDownListAClient" runat="server" 
         OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" 
         DataSourceID="SqlDataSourceSitePicker" DataTextField="SiteName" 
         DataValueField="SiteName">
    </asp:DropDownList>

    <asp:SqlDataSource ID="SqlDataSourceSitePicker" runat="server" 
         ConnectionString="<%$ ConnectionStrings:MainAppDB %>"
         SelectCommand="portal_SitePicker" SelectCommandType="StoredProcedure">

         <SelectParameters>
               <asp:Parameter Name="portaluserid" Type="String" />
         </SelectParameters>

    </asp:SqlDataSource>

</code>

ストアドプロシージャのコードは次のとおりです

<code>
ALTER PROCEDURE [dbo].[portal_SitePicker]
    -- Add the parameters for the stored procedure here
    @portaluserid varchar 
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    SELECT SiteName
FROM dbo.aspnet_UserMap, dbo.Sites 
WHERE dbo.Sites.SiteID = dbo.aspnet_UserMap.SiteID
and dbo.aspnet_UserMap.UserID = @portaluserid
END
</code>

ストアド プロシージャをテストすると、正しいサイトが取得されますが、現在ログインしているユーザーからユーザー ID の値を取得する方法がわかりません。

助言がありますか?

4

1 に答える 1

0

パラメータを渡すとき、SQL と asp ページの varchar のパラメータの長さを設定する方がベターです。asp ページの tht や @portaluserid varchar (25) とストア プロシージャのようなパラメータにサイズを追加してみてください。

于 2013-01-21T22:30:16.863 に答える