2010-08-11 3 views
1

그래서 gridview 내 gridview 내 첫 번째 gridview 잘 작동하고 있지만 내 두 번째 gridview select 매개 변수가있는 sqldatasource 있습니다 (기본값은 내가 tripID 일치하는 열을 잡기 위해 노력하고 내 Gridview1 행 바인딩 동안 단지rowDataBound 동안 내 sqldatasource에 매개 변수를 추가하려고 시도했습니다.

<asp:SqlDataSource ID="dsCountryByTripID" runat="server" 
     ConnectionString="<%$ ConnectionStrings:bahDatabase %>" 
     SelectCommand="spSelectCitiesByTripID" SelectCommandType="StoredProcedure"> 
     <SelectParameters> 
     <asp:Parameter Type="Int32" Name="tripID" DefaultValue="56" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 

) 테스트를했다. 하지만 내 데이터 소스 인 dsCountryByTripID는 마지막 tripID로만 입력됩니다. 이 마지막 "tripId"를 실행 왜 여기

protected void GridView1_RowDataBound1(object sender, GridViewRowEventArgs e) 
    { 
     GridView gv2 = (GridView)e.Row.FindControl("GridView2"); 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      dsCountryByTripID.SelectParameters.Clear(); 
      DataRowView drv = (DataRowView)e.Row.DataItem; 
      string tripID = (drv["pkiTripId"]).ToString(); 
      dsCountryByTripID.SelectParameters.Add("tripID", DbType.Int32, tripID); 
      //gv2.DataBind(); 
      //e.Row.DataBind(); 

     } 
    } 

답변

1

당신이 읽을 수 있습니다 : 그래서 당신이 행 tripID 통해 갈 때마다 http://msdn.microsoft.com/en-us/library/tw738475(VS.80).aspx
만 페이지의 끝에서 실행됩니다은 SQL 데이터 소스를 오버라이드 (override)됩니다.

정말 데이터 소스를 사용해야합니까? ADN을 사용하거나 다른 데이터 액세스를 사용할 수 없습니까?

희망이 도움이됩니다.

+0

SQL 데이터 소스가 결국 실행되기 때문에 나는 코드 AD를 사용해야합니다. 그물을 수동으로 열어서 언제든지 부를 수 있습니다. 이게 작동 할 수도 있습니다 .. – Spooks

+0

@spooks, 그게 내가 말하는거야. – user29964

0

먼저 페이지의 구조를 명확히해야합니다. dsCountryByTripID은 Gridview1 내부가 아니라 Gridview1 외부에서 선언 된 것으로 보입니다. 이것이 귀하의 dsCountryByTripID이 마지막 tripID로 입력되는 이유 일 것입니다. 당신이 원하는 일을하기 위해

, 구조는 다음과 같이해야한다 :

<asp:gridview id="gv1" runat="server" DataSourceID="ds1"> 
... 
    <asp:gridview id="gv2nested" runat="server" DataSourceID="dsCountryByTripID"> 
    </asp:gridview> 
    <asp:SqlDataSource ID="dsCountryByTripID" runat="server" 
    ConnectionString="<%$ ConnectionStrings:bahDatabase %>" 
    SelectCommand="spSelectCitiesByTripID" SelectCommandType="StoredProcedure"> 
     <SelectParameters> 
      <asp:Parameter Type="Int32" Name="tripID" DefaultValue="56" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 
... 
</asp:gridview> 
<asp:SqlDataSource ID="ds1" runat="server" > 
</asp:SqlDataSource> 

다음, 내부 데이터 소스 selectparameter에 올바른 값을 할당하는, 당신이 할 수있는 외부의 gridview에서 (gv1) RowCreated 이벤트 핸들러.

protected void gv1_RowCreated(object sender, GridViewRowEventArgs e) 
    { 
     //Retrieve the inner gridview 
     //Retrieve the inner sqldatasource 
     //Retrieve and assign selectparameter value 
    } 

그것은 당신이 게시 된 C# 코드와 유사하지만 당신은 추가로 selectparameter에 값을 할당하기 전에 지금 중첩의 SqlDataSource (dsCountryByTripID를) 검색의 FindControl을 사용해야합니다. (여기서 낚시하는 사람을 가르치 려하지만 더 많은 도움이 필요하거나 위의 경우가 아니라면 알려주십시오 :)

관련 문제