1

2つのコントロールとリピーター内にある1つのLinqDataSourceがあります。
LinqDataSourceは、最初のコントロールから取得した条件を使用して選択します。2番目の要素はLinqDataSourceを使用するため、異なるIDを提供する必要があります。そうしないと、リピーターのすべての2番目の要素のデータが同じになります。

私の目標を達成するために別のIDまたはソリューションを割り当てる方法はありますか?

理解を深めるために提供されているサンプルコードを次に示します。

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="LinqDataSource4">
     <ItemTemplate>
         <table >
             <tr>
                 <td>
                     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                 </td>
                 <td>
                     <asp:LinqDataSource runat="server" EntityTypeName="" ID="LinqDataSourceX" ContextTypeName="Fr.FrestandehEntities" Select="new (Value, Id)" TableName="DProperties" Where="DKey.Key == @DKeyp">
                         <WhereParameters>
                             <asp:ControlParameter ControlID="TextBox1" PropertyName="Text" DefaultValue="X" Name="DKeyp" Type="Object"></asp:ControlParameter>
                         </WhereParameters>
                     </asp:LinqDataSource>
                     <telerik:RadComboBox ID="RadComboBox77" runat="server" DataSourceID="LinqDataSource5" DataTextField="Key" DataValueField="Key"></telerik:RadComboBox>
                 </td>
             </tr>
         </table>
     </ItemTemplate>
 </asp:Repeater>
4

1 に答える 1

3

これは、リピーターのItemDataBoundイベントのコードビハインドで行う必要があります。申し訳ありませんが、vbにあります...

   Private Sub Repeater1_ItemDataBound(sender As Object, e As RepeaterItemEventArgs) Handles Repeater1.ItemDataBound

        If e.Item.ItemType = ListItemType.AlternatingItem OrElse e.Item.ItemType = ListItemType.Item Then

            Dim lds As LinqDataSource = CType(e.Item.FindControl("RadComboBox77"), LinqDataSource)
            CType(e.Item.FindControl("RadComboBox77"), RadComboBox).DataSourceID = lds.ID

        End If


    End Sub

これにはC#コンバーターツールを使用したので、それがどれほど正確かはわかりません。

private void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) {
    if (((e.Item.ItemType == ListItemType.AlternatingItem) 
                || (e.Item.ItemType == ListItemType.Item))) {
        LinqDataSource lds = ((LinqDataSource)(e.Item.FindControl("RadComboBox77")));
        ((RadComboBox)(e.Item.FindControl("RadComboBox77"))).DataSourceID = lds.ID;
    }
}
于 2013-02-18T19:07:29.310 に答える