Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在asp:Repeater中加亮显示(粗体字体)行(带计时器)_C#_Asp.net_Timer_Repeater_Highlight - Fatal编程技术网

C# 在asp:Repeater中加亮显示(粗体字体)行(带计时器)

C# 在asp:Repeater中加亮显示(粗体字体)行(带计时器),c#,asp.net,timer,repeater,highlight,C#,Asp.net,Timer,Repeater,Highlight,我有一个活动列表,其中显示了一个中继器。我已经用定时器来显示这些,所以定时器不是问题。这是我必须放入Timer\u tick方法中的代码 “突出显示计时器”应该一次突出显示一个项目/行,然后我想显示一些与突出显示的行相关的信息 如果使用另一个控件更容易,那没问题。我不必是个复读者。我之所以使用它,是因为它具有样式化的可能性(它不是只显示在一行中,而是有几个换行符等) 应要求: (中继器) 我在Timer_tick-event中没有任何内容,因为我尝试了一些方法,但失败后删除了它。希望足够。我

我有一个活动列表,其中显示了一个中继器。我已经用定时器来显示这些,所以定时器不是问题。这是我必须放入
Timer\u tick
方法中的代码

“突出显示计时器”应该一次突出显示一个项目/行,然后我想显示一些与突出显示的行相关的信息

如果使用另一个控件更容易,那没问题。我不必是个复读者。我之所以使用它,是因为它具有样式化的可能性(它不是只显示在一行中,而是有几个换行符等)

应要求:

(中继器)



我在Timer_tick-event中没有任何内容,因为我尝试了一些方法,但失败后删除了它。希望足够。

我会在tick事件处理程序中使用类似的东西,通过在
Repeater.Items
集合上循环,为突出显示的项设置一个特殊的CSS类

类似这样(未经测试):

int currentlhighlight=-1;
int nextHighlight=-1;
对于(int i=0;i
然后,您可以使用突出显示的
CSS类来处理样式(您提到的粗体字体)以及JavaScript或jQuery中的一些特殊行为


顺便说一句,一旦你得到当前高亮显示的项目,你可以在
RepeaterItem
对象上执行任何其他操作。

你能给我们看一些你迄今为止尝试过的项目代码吗?我已经在主帖子中添加了中继器的代码。如果我很了解你,你试图一次高亮显示一个项目吗?例如!首先是第1行,然后是第2行等等。我现在正在测试它,但是我得到一个错误,RepeaterItem不包含CssClass的定义?很抱歉,您必须使用
HtmlControl
类来实现这一点。我已经编辑了上面的代码……我已经尝试过了,但问题是,每一行的div(divActivity)的id都会改变,因为它们是唯一的。当我使用“自动生成”id时,它不起作用。不过,当我在一个“静态”div id上尝试它时,我做到了。您如何获得“自动生成”id?也许你知道让它工作的方法。Repeater1_divActivity_35;其中#第一行为0,第二行为1等等(第一行:Repeater1_divActivity_35;0)。我使用以下命令获取值:Repeater1.Controls[].Controls[1].ClientID;它在这一行给出了一个错误(对象引用未设置为对象的实例)(如果(htmlDiv.Attributes[“class”].Contains(“highlighted”))。我检查了它是否确实返回了div,它确实返回了div(Repeater1.Controls[I].Controls[1].ClientID;),所以这不是问题所在。
<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <div id="divActivity" runat="server">
            <span style="font-size:30px;">
                <%# DataBinder.Eval(Container.DataItem, "act_headline") %>
            </span>
            <br />
            <img alt="mapIcon" src="../img/mapIcon.gif" height="15px" width="15px" style="position:absolute;" />
            <span style="font-size:12px; font-style:italic; margin-left:23px;">    
                <%# DataBinder.Eval(Container.DataItem, "act_place") %>
            </span>
            <img alt="watchIcon" src="../img/watchIcon.png" height="15px" width="15px" style="position:absolute;" /> 
            <span style="font-size:12px; font-style:italic; margin-left:23px;">
                <%# DataBinder.Eval(Container.DataItem, "act_start") %> - <%# DataBinder.Eval(Container.DataItem, "act_end") %>
            </span>
            <br />
            <div style="word-wrap: break-word; width:1000px; margin-top:20px; padding:0;">
                <%# DataBinder.Eval(Container.DataItem, "act_text") %>
            </div>
            <br />
                <img alt="infoIcon" src="../img/infoIcon.png" height="15px" width="15px" style="position:absolute;" />
            <span style="font-size:12px; margin-left:23px;"><a target="_blank" href="http://<%# DataBinder.Eval(Container.DataItem, "act_info") %>"><%# DataBinder.Eval(Container.DataItem, "act_info") %></a>
            </span>
        </div>
    </ItemTemplate>
</asp:Repeater>
int currentHighlight = -1;
int nextHighlight = -1;
for (int i = 0; i < Repeater1.Items.Count; i++)
{
    HtmlControl htmlDiv = (HtmlControl)Repeater1.Controls[i].Controls[1];

    if (htmlDiv.Attributes["class"] != null)
    {
        if (htmlDiv.Attributes["class"].Contains("highlighted")) // this is the currently highlighted item
        {
            // record currently highlighted item index
            currentHighlight = i;

            // remove highlight
            htmlDiv.Attributes["class"].Replace("highlighted", "");
            htmlDiv.Attributes["class"].Trim();
        }
    }
}

if ((currentHighlight == -1) || (currentHighlight == Repeater1.Items.Count))
{
    // handle first Item highlighting
    nextHighlight = 1;
}
else
{
    // handle standard case
    nextHighlight = currentHighlight + 1;
}

// highlight next item
((HtmlControl)Repeater1.Controls[nextHighlight].Controls[1]).Attributes["class"] += " highlighted";