1

現在ログインしているユーザーの詳細を保持するセッション変数があります。変数に基づいてクエリを実行し、グリッド ビューに表示したいと思います。グリッド ビューのデフォルト値をセッション変数に置き換えたいのですが、うまくいきませんでした。

誰かが私を正しい方向に向けることができますか?

これは私が試したものです:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:..... %>" 

    SelectCommand="SELECT [Username], [Password], [CustomerName], [CustomerAddress], [Contact] FROM [Customers] WHERE ([Username] = @Username)">
    <SelectParameters>
        <asp:Parameter DefaultValue="session[new]" Name="Username" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>
4

3 に答える 3

3

私がやったことは、FlopScientistの答えに似ていました。DataSource には、デザイン ビューで行ったセッション変数を選択するためのオプションが実際にあり、以下のコードがあることがわかりました。

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:..... %>" 

SelectCommand="SELECT [Password], [CustomerName], [CustomerAddress], [Contact], [Username] FROM [Customers] WHERE ([Username] = @Username)">



<SelectParameters>
            <asp:SessionParameter Name="Username" SessionField="mySessionVariable" Type="String" />


</SelectParameters>
</asp:SqlDataSource>
于 2013-07-28T21:13:52.947 に答える
0

Sessionobject inASP.NETは、サーバー側の状態維持変数の 1 つです。

詳細については、こちらをご覧ください

セッション変数は、割り当てた値を単純に格納します。簡単に言えば、他のページで作成した場合でも、他のページでこの変数にアクセスできます。

あなたがしたと仮定しpage1.aspx ます:

  Session["uniqueName"] = GetGridViewData(); //you can store anything.

ここで、の署名は次のGetGridViewData()ようになります。

public DataTable GetGridViewData();

その後page2.aspx(または他のページ)で、これを行うことができます:

protected void Page_Load(object sender, EventArgs e)
{
   if(Session["uniqueName"]!=null)
   {
      //typecast it to your datastructure or whatever you assigned into it
      DataTable gridDataSource = (DataTable)Session["uniqueName"];

      //any custom logic you want to perform on gridDataSource
      gridView1.DataSource = gridDataSource;
      gridView.DataBind();
   }
}

フローの早い段階で割り当て/作成した後にのみ、変数にアクセスするようにしてください。

于 2013-07-25T21:48:19.300 に答える