0

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

我想创建一个方法,该方法从Object调用的 Items 列表中获取一个属性,ticketID并查找该字段的AssigneeView字段是否为 null 并返回一个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))
                        {
                            //???
                        }
                    }
                }
            }
4

2 回答 2

0

好的,事实证明我只需要再深入一层。我不需要使用另一种方法来为我进行检查。我在项目加载的事件处理程序中处理了这个,这就是我最终得到的:

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");
        }
    }
于 2012-04-07T17:16:44.227 回答
0

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

if (e.Row.RowType == DataControlRowType.DataRow) {
    if (DataBinder.Eval(e.Row.DataItem, "AssigneeView") == null) {
      //Set bold
    } else {
      //Set normal
    } 
}
于 2012-04-06T23:23:47.733 回答