2017-06-15 2 views
0

Ich arbeite derzeit an der Änderung eines Tree View-Steuerelements (Telerik MVC Extensions) für eine Kundenanfrage. Ihre Anforderung ist einfach: Wenn ein Element in der Struktur eine Anlage hat, fügen Sie eine Büroklammer neben dem Knoten hinzu, um sie zu identifizieren.Hinzufügen eines Bilds zu nur einem Knoten in einer Strukturansicht

Ich habe es bis jetzt geschafft, aber, fand einen kleinen Schluckauf damit. Ich kann das Bild zu bestimmten Knoten hinzufügen, die einen Anhang haben, jedoch sollten alle Knoten, die kein Bild haben, kein Bild haben (damit meine ich, dass sie innerhalb des Baumes normal erscheinen). Stattdessen finde ich, dass der Baum ein Leerzeichen der Größe des Büroklammerbilds platziert.

Gibt es eine Möglichkeit, diese leere Stelle dynamisch zu deaktivieren (aka keine Image-URL hinzufügen, wenn nicht notwendig)? Unten ist mein Code, wo ich diesen Prozess ausführe (wird auf der Erweiterungsmethode des Baumes durchgeführt, die nur die untere Ebene zeigt die Attachments).

Navigation Controller

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult GetNextTreeViewLevel(TreeViewItem node) 
{ 
    ... 
    //If bottom layer, then execute the following 
    var data = _TreeRepo.GetProcessesByParcel(int.Parse(values[1]), cntTreeList); 
    nodes = from item in data 
       select new TreeViewItem 
       { 
       Text = item.strProcess, 
       Value = "PR" + "," + item.cntProcess.ToString(), 
       LoadOnDemand = false, 
       Enabled = true, 
       Selected = SelectedSearchResult.ToString().Length > 0 
             && SelectedSearchResult.ToString().Split('~').Length > 3 
             && decimal.Parse(SelectedSearchResult.ToString() 
              .Split('~') 
              .Last() 
              .Substring(2)) == item.cntProcess 
       ImageUrl = item.ysnHasAttachment.HasValue && item.ysnHasAttachment.Value == 1 
           ? @"/Content/NewImages/attachment.png" 
           : string.Empty 
       }; 
    return new JsonResult { Data = nodes }; 
} 

Screenshots von dem, was es sieht aus wie ohne/mit Code für Bild Url:

enter image description here enter image description here

Antwort

0

ich lange kam zuletzt mit einer Lösung dazu angestiftet Problem. Das Problem war, wie ich meine Daten zu den Knoten hinzufügen ließ. Die ursprüngliche Logik führte nach dem Abrufen der Daten eine Linq-Abfrage aus, um ein IEnumerable-Objekt abzurufen.

Aus diesem Grund versuchte jeder Knoten ein Bild hinzuzufügen (auch wenn es keins gab). Daher der seltsam aussehende Raum. Im Folgenden habe ich diese Logik überarbeitet, um meine Daten korrekt zu erhalten.

var processNodes = new List<TreeViewItem>(); 
var data = _TreeRepo.GetProcessesByParcel(int.Parse(values[1]), cntTreeList); 

foreach (var item in data) 
{ 
    #region Process has at least one Attachment 
    if (item.ysnHasAttachment.HasValue && item.ysnHasAttachment.Value == 1) 
     processNodes.Add(new TreeViewItem 
     { 
      Text = item.strProcess, 
      Value = "PR" + "," + item.cntProcess.ToString(), 
      LoadOnDemand = false, 
      Enabled = true, 
      Selected = SelectedSearchResult.ToString().Length > 0 
         && SelectedSearchResult.ToString().Split('~').Length > 3 
         && decimal.Parse(SelectedSearchResult.ToString() 
         .Split('~') 
         .Last() 
         .Substring(2)) == item.cntProcess, 
      ImageUrl = "/Content/NewImages/smallAttachment.png" 
     }); 
    #endregion 
    #region Process has no Attachments 
    else 
     processNodes.Add(new TreeViewItem 
     { 
      Text = item.strProcess, 
      Value = "PR" + "," + item.cntProcess.ToString(), 
      LoadOnDemand = false, 
      Enabled = true, 
      Selected = SelectedSearchResult.ToString().Length > 0 
         && SelectedSearchResult.ToString().Split('~').Length > 3 
         && decimal.Parse(SelectedSearchResult.ToString() 
         .Split('~') 
         .Last() 
         .Substring(2)) == item.cntProcess 
     } 
    #endregion 
} 
nodes = processNodes; 

An dieser Stelle können Sie jetzt die Knoten zurückgeben. Diejenigen, die ein Attachment-Icon haben sollten, und diejenigen, die dies nicht sollten, werden dies nicht tun. Komisch, wie 4 Monate später, kann man etwas aus dem Ärmel fallen.

Verwandte Themen