0

私は次のリピーターを持っています:

                <asp:Repeater ID="rpttsk" runat="server">
                    <HeaderTemplate>
                        <tr>
                            <td>
                                <b>ID</b>
                            </td>
                            <td>
                                <b>Date</b>
                            </td>

                        </tr>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <tr>
                            <td>
                                <%#Eval("ID")%>
                            </td>

                            <td>
                                <%#Eval("PerfDate", "{0:MMM d, yyyy}")%>
                            </td>

                        </tr>
                    </ItemTemplate>
                </asp:Repeater>

コードビハインドファイルにコードを入れています

     Protected Sub rpttsk_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rpttsk.ItemDataBound

しかし、このサブ手順を打つことさえしません

4

3 に答える 3

1

表示する色の選択はビューの問題です。一般に、コード ビハインドではなく、ビューに関するロジックをビューに配置します。これにより、ビューの柔軟性が向上します。アプリケーションの表面的な更新に必要なバイナリ更新の数が少ないため、メンテナンスが容易になります。

技術的には、日付を今日と比較するロジックはビジネス ロジックの問題であると言えます。つまり、"IsDateGreaterThanToday" のようなゲッターなど、背後にあるコードである可能性があります。

次に、リピータービューを次のように修正できます。

<td <%# IsViewGreaterThanToday(Eval("PerfDate")) ? "class='greater-than-today'" : ""%>>
<%#Eval("PerfDate", "{0:MMM d, yyyy}")%>
</td>
于 2012-07-31T18:00:22.690 に答える
1

このロジックは、ItemDataBound のコード ビハインドで設定できます。

void rpttsk_ItemDataBound(Object Sender, RepeaterItemEventArgs e) 
{
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     {

     }
}  
于 2012-07-31T17:54:07.040 に答える
1

私はこのようにします:フロントエンド:

<asp:Repeater ID="rpttsk" runat="server" OnItemDataBound="rpttsk_ItemDataBound">
    <HeaderTemplate>
        <tr>
            <td>
                <b>ID</b>
            </td>
            <td>
                <b>Date</b>
            </td>

        </tr>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td>
                <%#Eval("ID")%>
            </td>

            <td>
                <asp:Label ID="lbl" runat="server"/>
            </td>

        </tr>
    </ItemTemplate>
</asp:Repeater>

バックエンド:

protected void rpttsk_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
    {
        YourDataType item = e.Item.DataItem as YourDataType;
        Label lbl = e.Item.FindControl("lbl") as Label;
        lbl.Text = item;
        if (DateTime.Compare(item.YourDateHere, DateTime.Now()) > 0)
        {
            lbl.ForeColor = Color.Red;
        }
        else
        {
            lbl.ForeColor = Color.Blue;
        }
    }
}

行全体に色を付けたい場合は、すべてをラベルに入れる必要があります。

于 2012-07-31T18:01:00.070 に答える