如何遍历每个 ReadListViewItem ,检查值并将其设置为粗体

本文关键字:设置 检查 何遍历 遍历 ReadListViewItem | 更新日期: 2023-09-27 18:30:23

我有一个列表视图,其中加载了一个对象列表,其中包含一个名为 AssigneeView 的属性,该属性保存条目打开的日期。listview's ItemTemplate有一个名为"lblHeader"的标签。我想做的是循环ListView。项目并检查每个元素的AssigneeView属性,如果null,我想将lblHeader.Text设置为粗体(表示未读)。

我想创建一个方法,该方法从项目列表中的Object中获取一个名为 ticketID 的属性,并查找该字段的AssigneeView字段是否为空并返回bool。所以它看起来像

ForEach item in listview.Items
   if(IsUnread(item.datamember.ticketID)) then
       item.lblHeader.MakeBold
   else
      item.lblHeader.MakeNotBold

我不是 100% 知道如何深入研究 telerik 控件以获得我需要做的事情。有什么建议吗?

更新:这是我目前所处的位置:

using (var client = new QUTIService.QSVCClient())
            {
                var data = client.SearchTickets(this.myGuid, txtSearchString.Text, 100, chkSearchClosed.Checked).ToList();
                lsvResultTickets.DataSource = data;
                lsvResultTickets.DataBind();
                if (data.Count == 0)
                {
                    lblStatus.Text = "No tickets found.";
                }
                else
                {
                    foreach (var item in lsvResultTickets.Items)
                    {
                        var obj = item.DataItem as QT.FullTicket;
                        if (TicketIsUnread(obj.OriginalTicket.TicketID))
                        {
                            //???
                        }
                    }
                }
            }

如何遍历每个 ReadListViewItem ,检查值并将其设置为粗体

您需要

做的是在 RowDataBound 事件中检查 AssigneeView,然后相应地设置 lblHeader。 在数据源添加到 GridView 时,将为数据源中的每一行调用 RowDataBound。

if (e.Row.RowType == DataControlRowType.DataRow) {
    if (DataBinder.Eval(e.Row.DataItem, "AssigneeView") == null) {
      //Set bold
    } else {
      //Set normal
    } 
}

好的,事实证明我只需要再钻取一个级别。我不需要拿出另一种方法来为我做检查。我在项目加载的事件处理程序中处理了这个问题,这是我最终得到的:

protected void ResultItem_DataBound(object sender, RadListViewItemEventArgs e)
    {        
        var dItem = e.Item as RadListViewDataItem;
        var dObj = dItem.DataItem as QT.FullTicket;
        //if no read date, mark as unread (bold)
        if (dObj.AssigneeView == null)
        {            
            var headerLabel = e.Item.FindControl("lblHeader") as Label;
            headerLabel.Style.Add("Font-Weight", "Bold");
            headerLabel.Style.Add("Color", "Orange");
        }
    }