2011-04-18 2 views
1

현재 두 개의 웹 컨트롤이 있습니다. 하나는 CheckBoxList이고 다른 하나는 GridView입니다. GridView의 데이터 구성에는 CheckBoxList의 선택된 값에 연결된 쿼리가있는 매개 변수가 있습니다. 그러나, 두 개의 컨트롤과 같이 별도의 콘텐츠 태그에있을 때 : 나도 같은 <asp:Content> 태그에 모두 컨트롤을 넣을 때 잘 작동하지만 일이 System.InvalidOperationException: Could not find control 'cbList1' in ControlParameter '?'의 오류로 떨어져 전화다른 콘텐트 태그의 컨트롤을 매개 변수로 사용할 수 있습니까?

<asp:Content ID="ListPanel" runat="server" ContentPlaceHolderID="LeftContent"> 
    <h3>Pick Info Here</h3> 
    <asp:CheckBoxList ID="cbList1" runat="server" 
     DataSourceID="TestDataSource" 
     DataTextField="St" DataValueField="St" RepeatColumns="2"> 
    </asp:CheckBoxList> 
</asp:Content> 

<asp:Content ID="ResultsPanel" runat="server" ContentPlaceHolderID="RightContent"> 
    <asp:GridView ID="gView1" runat="server" 
     AllowPaging="True" AllowSorting="True" 
     AutoGenerateColumns="False" DataSourceID="TestDS1"> 
     <Columns> 
     ... 
     </Columns> 
    </asp:GridView> 
    <asp:SqlDataSource ID="TestDS1" runat="server" 
    ... 
    SelectCommand="SELECT ST FROM [Table] where ST = ?"> 
    <SelectParameters> 
     <asp:ControlParameter ControlID="cbList1" Name="?" 
      PropertyName="SelectedValue" /> 
    </SelectParameters> 
</asp:SqlDataSource> 
</asp:Content> 

. 컨트롤을 별도로 유지하는 방법이 있습니까? 또는 동일한 컨트롤 태그 안에 있어야합니까?

+0

두 개의 내용 패널에 표시 할 이유가 있습니까? – TKTS

+0

Da 보스가 그렇게 말했습니다. – Nathanus

답변

0

분명히 이것은 매개 변수 항목의 ControlIDContentPlaceHolderID을 접두사로 붙이면됩니다. 필자의 경우 코드는 다음과 같을 것입니다 :

SelectParameters> 
     <asp:ControlParameter ControlID="LeftContent:cbList1" Name="?" 
      PropertyName="SelectedValue" /> 
    </SelectParameters> 

매개 변수는 LeftContent 태그에 있습니다.

2

조금 힘이 들지만, ResultPanel에 HiddenControl을 넣은 다음 페이지로드시 그 값을 cbList1.SelectedValue으로 설정할 수 있습니다.

내가 속한 콘텐츠, 코드 숨김에 관계없이 컨트롤에 액세스 할 수 있지만 분명히 aspx 측에서 콘텐츠 자체 내에서 액세스 할 수 없다는 것을 알고 있습니다.

+0

이것은 런타임에 올바른 컨트롤에서 값을 가져 오는 유일한 "어리석은"방법입니다. ASP.net이 브라우저, DOM 등으로 인해 항상 도움이되지는 않을 것입니다. 누가 알겠습니까? – Fandango68

0

몇 년 후 ... 나는 gridview 및 컨트롤 매개 변수와 동일한 문제가있었습니다. 렌더링 된 페이지의 소스 코드에서 요소에 대한 정확한 "경로"를 찾을 수 있습니다. 제 경우에는 gv1$txtEmployeeName뿐 아니라 gv1$ctl02$txtEmplyeeName입니다.

내 생각에 은 EditItemTemplate을 의미합니다. ctl02$이 내 문제를 해결했기 때문입니다.

관련 문제