2014-03-30 8 views
0

내가있는 gridview를 사용하여 사용자가 로그인 할 때PageLoad, 쿼리 문자열 및 GRIDVIEW - 고객의 주문을 가져 오는

를 쿼리 문자열 각 고객에게 특정 내 주문 데이터베이스 테이블에서 주문 정보를 검색하기 위해 노력하고, 내가 모든 볼을 싶습니다 그들의 명령. 내가

C#을

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:FoodDealsConnectionString %>" SelectCommand="SELECT [customerid], [orderid], [menuname], [menuprice] FROM [Order] WHERE ([customerid] = @customerid)"> 
    <SelectParameters> 
     <asp:QueryStringParameter Name="customerid" QueryStringField="customerid" Type="Int32" /> 
    </SelectParameters> 
</asp:SqlDataSource> 

페이지로드

protected void Page_Load(object sender, EventArgs e) 
{ 
    SqlDataSource1.SelectCommand = "SELECT [orderid], [orderdate], [menuname], [menuprice], [quantity], [isdelivered] FROM [order] WHERE ([customerid] = " + Request.QueryString["customerid"];    
} 

내가 이것을 시도 '고객 ID'의 쿼리 문자열을 사용하여있는 gridview에 바인더 제본 된 주문 테이블이 아무것도 온다 없습니다. gridview가 표시되지 않지만 페이지 링크 끝에 ? customerid = 5를 넣으면 완전히 표시됩니다.

+0

닫는 괄호)는 페이지로드 쿼리에 넣지 않습니다. – ray

+1

이와 같이 인라인 SQL은 사용하지 마십시오. http://technet.microsoft.com/ko-kr/library/ms161953(v=sql.105).aspx –

+0

@ray 브래킷을 닫았지만 여전히 표시되지 않습니다. 나는 또한 대괄호를 완전히 제거하려고 노력했다 - 같은 문제. 나는 asp.net을 배우는 중이며 필요한 결과를 얻는 방법에 대한 단서가 없다. – user3477698

답변

0

페이지로드 이벤트에서 customerid가 비어 있는지 확인하십시오.

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
     if (Request.QueryString["customerid"] != null) 
     { 
     SqlDataSource1.SelectCommand = "SELECT [orderid], [orderdate], [menuname], [menuprice], [quantity], [isdelivered] FROM [order] WHERE [customerid] = " + Request.QueryString["customerid"].ToString(); 
     } 
     } 
    } 

그러면 그리드보기가 아래와 같아야합니다.

<asp:GridView ID="gvL" DataSourceID="SqlDataSource1" runat="server" AutoGenerateColumns="False"/> 
+0

이것은 저에게 효과적입니다. customerid는 pageload 이벤트에서 비어 있었고 나는 그것을 고쳤습니다. 감사합니다 – user3477698

+0

@ user3477698, 당신은 환영합니다. 기꺼이 도와 줘. – RGS