0

2 つのリピーターがあり、1 つはもう 1 つの中にネストされています。Inner Repeater には基本的にテキスト ボックスのグリッドが含まれて表示され、ユーザーが一連の情報を入力できるようになっています。

ネストされた子の項目が 0 の場合、問題はありません。それ以外の場合は、常に 4 の増分で、テキスト ボックスのペアが存在します。4 つのペアがある場合、4 つのペアすべてを 1 行に表示したい場合、8 つのペアがある場合、最初の 4 つのペアと次の 4 つのペアの間に改行が必要です。

領域のサイズとボックスのサイズに基づいて、純粋にCSSでこれを試みていましたが、新しい行に配置する必要がありますが、リピーターでこれを行うよりクリーンな方法はありますか? 一部のブラウザーと OS で、ぎこちなくラップすることに気付きました。

<ItemTemplate>
<tr>
    <td>&nbsp;</td>
        <td>
            <asp:Label runat="server" ID="lbDayOfWeek"  Text='<%# DataBinder.Eval(Container.DataItem, "DayOfWeek") %>'/>
        </td>
        <td>
            <asp:Label runat="server" ID="lbDate" Text='<%# Format(DataBinder.Eval(Container.DataItem, "DateOfDay"), "MM/dd/yyyy") %>'/>
        </td>
        <td class="punches">
        <asp:Repeater runat="server" ID="Punches" DataSource='<%# DataBinder.Eval(Container.DataItem, "PunchPairs") %>'>
                <HeaderTemplate>
                </HeaderTemplate>
                <ItemTemplate>
                    <asp:TextBox runat='server' ID='Tb1' Text='<%# if(eval("InDefault")= false,DataBinder.Eval(Container.DataItem, "InTime"),"") %>' />
                    <asp:TextBox runat='server' ID='Tb2' Text='<%# if(eval("OutDefault")= false,DataBinder.Eval(Container.DataItem, "OutTime"),"") %>' />
                </ItemTemplate>
                <FooterTemplate>
                </FooterTemplate>
        </asp:Repeater>
        </td>
        <td class="Totals">
            <asp:TextBox ID="txtHours" runat="server"  Text='<%# DataBinder.Eval(Container.DataItem, "TotalHrs") %>' ReadOnly='true'/>
        </td>
    <td>&nbsp;</td>
</tr>

4

1 に答える 1

1

はい、子リピーターの ItemDataBound イベントを使用して CSS でそれを行うことができます

On itemDatabound イベント

Private Sub Punches_DataBound(sender As Object, e As RepeaterItemEventArgs) Handles Punches.ItemDataBound
    If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
        Dim XDiv As HtmlGenericControl = CType(e.Item.FindControl("XDiv"), HtmlGenericControl)
        XDiv.Attributes("Class") += " Item" & (e.Item.ItemIndex Mod 4)
    end if 
end sub 

パンチのアイテムテンプレート

<ItemTemplate>
    <div runat="server" id="XDiv" class="Item">
        <asp:TextBox runat='server' ID='Tb1' Text='<%# if(eval("InDefault")= false,DataBinder.Eval(Container.DataItem, "InTime"),"") %>' />
        <asp:TextBox runat='server' ID='Tb2' Text='<%# if(eval("OutDefault")= false,DataBinder.Eval(Container.DataItem, "OutTime"),"") %>' />
    </div>
</ItemTemplate>

そしてそれらを浮かせるCSS

.Item{
  float:left;
}

.Item0{
  clear:both;
}
于 2013-09-30T23:20:44.813 に答える