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

您可以在 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

选择要显示的颜色是一个视图问题。一般来说,我会将视图关注逻辑放入视图而不是代码背后。它允许更多的视图灵活性。它可以使维护更容易,因为对应用程序的外观更新不需要那么多二进制更新。

从技术上讲,您可以说将日期与今天进行比较的逻辑可能是一个业务逻辑问题。所以这可能是背后的代码,例如像“IsDateGreaterThanToday”这样的吸气剂。

然后你的转发器视图可以这样修改:

<td <%# IsViewGreaterThanToday(Eval("PerfDate")) ? "class='greater-than-today'" : ""%>>
<%#Eval("PerfDate", "{0:MMM d, yyyy}")%>
</td>
于 2012-07-31T18:00:22.690 回答
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 回答