1

質問

リピーター内にグリッドビューがある場合、主キーがリピーター項目テンプレート行に関連するグリッドビューに主キー ID を渡すにはどうすればよいですか?

私は現在、PK を含む隠しフィールドと、それを検出してグリッドビューにバインドするための制御パラメーターを使用して、これを実行しようとしています。

現在のエラー

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
4

1 に答える 1

1

あなたが試すことができるのは、リピーターでsqldatasourceを移動することです

<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>
于 2013-10-02T11:13:53.370 に答える