我有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扩展方法。

09-15 18:38