3

この sqlDataSource
@userId は、システム内の現在のユーザーのパラメーターです。

<asp:SqlDataSource ID="dsProfit" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" SelectCommand="select name, sum(value) as suma  from AllProfitView where IdUser=@userId group by name  order by sum(value) desc">

</asp:SqlDataSource>

コードビハインドでは、これを Page_Load に持っています:

 dsProfit.SelectParameters.Add("@userId", cui.getCurrentId());




 public Guid getCurrentId()
        {
            MembershipUser currentUser = Membership.GetUser();
            Guid currentUserId = (Guid)currentUser.ProviderUserKey;
            return currentUserId;
        }

ページを開始すると、エラーが発生します。スカラー変数「@userId」を宣言する必要があります。

4

2 に答える 2

1

SelectParametersqlDataSourceに追加します

<asp:SqlDataSource ID="dsProfit" runat="server"  
ConnectionString="<%$ ConnectionStrings:DefaultConnection %>"  
SelectCommand="select name, sum(value) as suma  from AllProfitView  
where IdUser=@userId group by name  order by sum(value) desc">
    <SelectParameters>
        <asp:Parameter Name="userId" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

そしてこれを好きに割り当てます

  dsProfit.SelectParameters["userId"].DefaultValue =  
  cui.getCurrentId().ToString();
于 2013-07-27T10:13:04.113 に答える
0

SqlDatasource 内で selectparameter を定義してみてください

<asp:SqlDataSource ID="dsProfit" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" SelectCommand="select name, sum(value) as suma  from AllProfitView where IdUser=@userId group by name  order by sum(value) desc">
<SelectParameters>
            <asp:Parameter Name="userId" Type="int32" />
</SelectParameters>

</asp:SqlDataSource>

あなたのパラメータはintなので、文字列に変換してください

 dsProfit.SelectParameters["userId"].DefaultValue = cui.getCurrentId().toString();
于 2013-07-27T10:13:18.597 に答える