2013-10-02 2 views
1

질문에는 기본 키가 중계기의 항목 템플릿 행에 관한있는 gridview에 기본 키 ID를 전달 어떻게중첩 된 행에서 중첩 된 Gridview로 ID를 전달하는 방법은 무엇입니까?

리피터 안에 gridview에있는 경우?

현재이를 PK 및 컨트롤 매개 변수가 들어있는 숨겨진 필드를 사용하여 검색하고이를 gridview에 바인딩하려고 시도하고 있습니다.

현재의 에러

ControlParameter 'PK'에서 제어 'hidPK'을 (를) 찾을 수 없습니다.

단축 코드

<asp:Repeater ID="rpt" RunAt="Server"> 
    <ItemTemplate> 
    <asp:HiddenField ID="hidPK" runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "PK") %>'/> 

    <asp:GridView ID="GV" DataSourceID="sqlSource"></asp:GridView> 

    </ItemTemplate> 
</asp:Repeater> 

<asp:SqlDataSource ID="sqlSource" RunAt="Server" SelectCommand="spPopulateGridview" SelectCommandType="StoredProcedure"> 
    <SelectParameters> 
    <asp:ControlParameter Type="Int32" Name="PK" DefaultValue="0" ControlID="hidPK"/> 
    </SelectParameters> 
</asp:SqlDataSource> 

Protected Sub rpt_ItemDataBound(Sender As Object, e As RepeaterItemEventArgs) Handles rpt.ItemDataBound 
    If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then 
     Dim gv As GridView = TryCast(e.Item.FindControl("GV"), GridView)  
     gv.DataSource = ds 
     gv.DataBind() 
    End If 
End Sub 

답변

1

뭘 리피터

<asp:Repeater ID="rpt" RunAt="Server"> 
    <ItemTemplate> 
    <asp:HiddenField ID="hidPK" runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "PK") %>'/> 

    <asp:GridView DataSourceID="sqlSource"></asp:GridView> 
    <asp:SqlDataSource ID="sqlSource" RunAt="Server" SelectCommand="spPopulateGridview" SelectCommandType="StoredProcedure"> 
     <SelectParameters> 
     <asp:ControlParameter Type="Int32" Name="PK" DefaultValue="0" ControlID="hidPK"/> 
     </SelectParameters> 
    </asp:SqlDataSource> 
    </ItemTemplate> 
</asp:Repeater> 
+0

감사 한스에서의 SqlDataSource를 이동 시도 할 수 있습니다, 내가 같이이 고려 않았다 편집 잘못한 이유 또는 repeater로 이동 시키면 데이터 소스가 선언되지 않은 것으로 간주됩니다. "오류 : 'sqlSource'가 선언되지 않았습니다." 내가 더 이상 중계기 내에서 sqldatasource를 찾을 수 있기 때문에 용의자. 어떤 아이디어? – Obsidian

+0

ItemTemplate에서 어떻게 추가 했습니까? 나는 testdata로 시험해 보았는데 위와 같이 작동하는 것 같았다. –

+0

예. 페이지로드시 코드 뒤에 sqlSource가 선언되었습니다. 어쨌든 이것이 고유 한 가치를 얻는 방법이라고 생각하십니까? PKID를 리피터 컨트롤에 직접 바인딩 할 수 있습니까? – Obsidian