如何遍历每个 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))
{
//???
}
}
}
}
您需要
做的是在 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");
}
}