C# 如何分配不同的ID';中继器中的元件是什么?
我有两个控件和一个位于中继器内的LinqDataSource。C# 如何分配不同的ID';中继器中的元件是什么?,c#,asp.net,data-binding,ado.net,repeater,C#,Asp.net,Data Binding,Ado.net,Repeater,我有两个控件和一个位于中继器内的LinqDataSource。 LinqDataSource使用从第一个控件获得的条件进行选择。 由于我的第二个元素使用LinqDataSource,我需要提供不同的ID,否则中继器中所有第二个元素的数据都是相同的 有没有办法分配不同的ID或任何解决方案来实现我的目标 以下是为更好地理解而提供的示例代码: <asp:Repeater ID="Repeater1" runat="server" DataSourceID="LinqDataSource4">
LinqDataSource使用从第一个控件获得的条件进行选择。 由于我的第二个元素使用LinqDataSource,我需要提供不同的ID,否则中继器中所有第二个元素的数据都是相同的 有没有办法分配不同的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>
您需要在repeaters 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#converter工具,所以我不知道它有多精确
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;
}
}
标记为答案,除非我找到更好的答案。谢谢;)