あなたはjavascriptでこれを行うことができます。または、ラッパークラスを作成してジョブを実行することもできます。次に例を示します(JavaScript以外):
aspx:
<asp:Repeater runat="server" ID="myRepeater">
<HeaderTemplate>
<table>
<tr>
<th>Column 1</th>
<th>Column 2</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%#Eval("FirstColumnData.DisplayString") %>
</td>
<td>
<%#Eval("SecondColumnData.DisplayString") %>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
背後にあるコード:
// Say, this is your data item class
public class MyData
{
public string Field1;
public int Field2;
public string DisplayString
{
get { return Field1 + " " + Field2; }
}
}
// Wrap it
public class TwoColumnWrappedData
{
public MyData FirstColumnData { get; set; }
public MyData SecondColumnData { get; set; }
}
// Convert your datasource to wrapped datasource
private IEnumerable<TwoColumnWrappedData> GetWrappedData(IEnumerable<MyData> dataSource)
{
TwoColumnWrappedData wrappedData = null;
foreach (var myData in dataSource)
{
if (wrappedData == null)
{
wrappedData = new TwoColumnWrappedData();
wrappedData.FirstColumnData = myData;
}
else
{
wrappedData.SecondColumnData = myData;
yield return wrappedData;
wrappedData = null;
}
}
}
// Now data bind like this
...
var dataSource = Enumerable.Range(1, 10).Select(i => new MyData { Field1 = "Item", Field2 = i }); // This is just an example; Populate it with actual data
myRepeater.DataSource = GetWrappedData(dataSource);
myRepeater.DataBind();
...