2013-07-25 6 views
1

현재 로그인 한 사용자의 세부 정보를 보유하는 세션 변수가 있습니다. 변수를 기반으로 쿼리를 실행하고 격자보기에 표시하고 싶습니다. 격자보기의 기본값을 세션 변수로 바꾸고 싶지만 작동하지 않습니다.ASP.Net Gridview에서 세션 변수 사용

누구나 올바른 방향으로 나를 가리킬 수 있습니까?

이것은 내가 뭘하려 : ASP.NET에서

<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> 
+1

지금까지 시도한 것을 게시하십시오. –

+0

이것은 내가 시도한 것이다. isaiah

답변

0

Session 객체가 서버 측 상태를 유지 변수 중 하나입니다.

자세한 내용은 here을 참조하십시오.

세션 변수는 사용자가 지정한 값을 저장합니다. 그리고 간단한 말로, 다른 페이지에서이 변수를 만들었더라도이 변수에 액세스 할 수 있습니다.

GetGridViewData()의 서명이 같은 생각됩니다
Session["uniqueName"] = GetGridViewData(); //you can store anything. 

:

public DataTable GetGridViewData(); 
page2.aspx에 다음

(또는 다른 페이지),이 작업을 수행 할 수 있습니다

그래서 당신이 한 page1.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(); 
    } 
} 

변수에만 액세스하십시오. 흐름에서 이전에 할당/생성 한 후에

+0

답변을 주셔서 감사합니다. – isaiah

3

데이터 소스의 Selecting 이벤트를 사용하여 SqlDataSource에서 쿼리를 실행하기 바로 전에 Session 변수 값을 제공 할 수 있습니다. OnSelecting 속성을 사용하여 마크 업에서이 이벤트를 설정하십시오. , 선택 이벤트 처리기에서

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:..... %>" 
    OnSelecting="SqlDataSource1_Selecting" 
    SelectCommand="SELECT [Username], [Password], [CustomerName], [CustomerAddress], [Contact] FROM [Customers] WHERE ([Username] = @Username)"> 
    <SelectParameters> 
     <asp:Parameter Name="Username" Type="String" /> 
    </SelectParameters> 
</asp:SqlDataSource> 

, 당신은 다음과 같이 수행

이 이벤트 핸들러에서
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
    { 
      if(Session["UserName"]!=null) 
      { 
      // do this only when Session Variable stores as a string the Username 
      e.Command.Parameters["@Username"].Value = Session["UserName"]; 
      } 
     else 
      { 
       // assign the default value if session variable is Null 
       e.Command.Parameters["@Username"].Value ="DefaultValue"; 
      } 

    } 

, 당신은 SqlDataSourceSelectingEventArgs.Command 속성을 통해 실행되기 직전의 명령에 액세스하고 매개 변수를 수정할 수 있습니다 값을 프로그래밍 방식으로 지정합니다.

3

내가 끝낸 것은 FlopScientist의 대답과 비슷했습니다. 데이터 소스에 실제로 디자인보기에서 수행 한 세션 변수를 선택할 수있는 옵션이 있으며 아래 코드가 있음을 알았습니다.

<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>