我有2个StringCollections:
StringCollection ParameterIDs
StringCollection ParameterValues
是否能够将这两个StringCollections映射为DataSource,例如:
repeater.DataSource = ParameterIDs (as row1) + ParameterValues (as row2);
repeater.DataBind();
并在中继器中使用它们,例如:
<asp:Repeater ID="repeatParameters" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td class="formLabel">
<asp:Label ID="lblParameterID" Text="<% #DataBinder.Eval(Container.DataItem,"ParameterIDs") %>" runat="server" MaxLength="50"></asp:Label><br />
</td>
<td class="formInputText">
<asp:Label ID="lblParameterValue" Text="<%#DataBinder.Eval(Container.DataItem,"ParameterValues") %>" runat="server" MaxLength="50"></asp:Label><br />
</td>
</tr>
<tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
最佳答案
如果您使用的是.NET 3.5,这将完全满足您的要求:
StringCollection parameterIds = new StringCollection();
StringCollection parameterValues = new StringCollection();
parameterIds.Add("someID");
parameterValues.Add("someValue");
var dataSource = parameterIds.Cast<string>()
.SelectMany(itemOne => parameterValues
.Cast<string>(), (itemOne, item2) => new { Row1 = itemOne, Row2 = item2 });
repeater.DataSource = dataSource;
repeater.DataBind();
就像Bogdan_Ch所说的那样,如果您使用的是.NET 2.0及更高版本,我建议您从
StringCollection
移到List<string>
。这样做还有一个好处,就是您不需要使用Cast
扩展方法。