2012-04-06 4 views
0

Ich habe eine Listenansicht, die mit einer Liste von Objekten geladen ist, die ein Attribut mit dem Namen AssigneeView enthalten, das das Datum enthält, an dem der Eintrag geöffnet wurde. Die listview'sItemTemplate hat eine Bezeichnung mit dem Namen "lblHeader". Was ich tun möchte, ist Schleife durch die ListView .Items und überprüfen Sie jedes Element AssigneeView Attribut, wenn es null ist, möchte ich die lblHeader.Text fett (was darauf hinweist, es ist ungelesen).Wie durchlaufe ich jedes readlistviewitem, überprüfe den Wert und setze ihn fett?

Ich möchte ein Verfahren zu schaffen, die ein Attribut aus den Object in der Liste Elemente ticketID nimmt genannt und Nachschlag, ob das AssigneeView Feld für dieses Feld null ist und ein bool zurück. So würde es so aussehen wie

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

Ich bin nicht 100% wie in die Telerik Kontrolle zu graben, zu bekommen, was ich brauche, dies zu tun. Irgendwelche Vorschläge?

UPDATE: hier, wo ich im Moment bin:

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)) 
         { 
          //??? 
         } 
        } 
       } 
      } 
+0

Ok, also habe ich es in einen Event-Handler. RadListViewItemEventArgs e ist die Referenz. Ich kann mit e.Item.FindControl ("lblHeader") auf das Label zugreifen und es fett formatieren. Aber ich habe Probleme, das Objekt aus dem Objekt zu entfernen. Regelmäßige asp-Steuerelemente sind normalerweise ziemlich einfach: (Type) e.Item oder so ähnlich. Aber e.Item ist vom Typ RadListViewItem und wird nicht in das FullTicket-Objekt umgewandelt, das darin enthalten ist. – Sinaesthetic

Antwort

0

Ok, es stellt sich heraus, dass ich nur noch eine Ebene tiefer bohren musste. Ich musste keine andere Methode wählen, um den Scheck für mich zu erledigen. Ich behandelte dies ist in der Artikel geladen Event-Handler, hier ist, was ich landete mit:

0

Was Sie tun müssen, ist AssigneeView im Falle RowDataBound überprüfen und dann lblHeader entsprechend eingestellt. RowDataBound wird für jede Zeile in Ihrer Datenquelle aufgerufen, wenn sie zur GridView hinzugefügt wird.

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

Es ist eine Listenansicht, keine Gridview. Es scheint kein Row-Attribut zu haben – Sinaesthetic

Verwandte Themen