none
Aide pour comprendre le fonctionnement d'une méthode RRS feed

  • Question

  • Bonjour;
    Je suis débutant en ASP.NET.
    Je vais changer une classe. Mais avant cela j'ai besoin de bien comprendre son code.
    Il s'agit du code behind d'une application asp.net. Ici ses 2 principales méthodes.
    Il s'agit de comparer des items dans une treeview A (d'infragistics) à des items dans un treeview B puis d'afficher les détails des différences des caractéristiques de ces items dans un grid d'infragistics.
    J'ai commenté les parties du code que je ne comprend pas (soit presque toute la classe...).
    Pouvez-vous m'aider à comprendre le fonctionnement du code en répondant à mes questions (commentaires dans le code), ou en rajoutant des commentaires sur des bouts de code dont vous avez bien compris le fonctionnement?
    D'avance merci.
       protected void expandTree(object sender, ignav.WebTreeNodeEventArgs args)
    {
    TSoft.TreeNodes dbChildren;
    long id = (long)args.Node.DataKey; // Que veut dire args.Node.Datakey?
    if (id > 0)
    {
    TSoft.TreeNode dbNode = new TSoft.TreeNode(id);
    dbChildren = dbNode.getChildren();
    if (dbChildren.Count == 0)
    {
    args.Node.ShowExpand = false;
    }
    }
    else
    {

    TSoft.Tree dbTree = new TalentSoft.Tree(-id); // Que fait cette ligne de code?
    dbChildren = dbTree.getOrphansAtLevel(args.Node.Level + 1);// Que fait cette ligne de code?
    if (args.Node.Level == 1 && dbChildren.Count == 0)
    {
    args.Node.ShowExpand = false;
    }
    }
    ignav.Node webNode;
    foreach (TSoft.TreeNode dbChild in dbChildren)
    {
    webNode = this.newWebNode(dbChild);
    args.Node.Nodes.Add(webNode);
    }
    if (id < 0 && args.Node.Level == 0)
    {
    webNode = this.newWebNode("Autres", id, true);
    args.Node.Nodes.Add(webNode);
    }
    }

       private void updateDiffCompetences()
    {
    long firstGPENodeId = (long)this.currentTree.SelectedNode.DataKey;
    long secondGPENodeId = (long)this.comparedTree.SelectedNode.DataKey;
     
    if (firstGPENodeId > 0 && secondGPECNodeId > 0)
    {
    this.showDiffCompetences(firstGPENodeId, secondGPENodeId);
    }
    else
    {
    this.hideDiffCompetences();
    }
    }
     
    private void showDiffCompetences(long firstGPENodeId, long secondGPENodeId)
    {
    int distance = 0;
     
    GPE.GPENode firstGPENode =
    GPE.GPENode.Load(firstGPENodeId);
    GPE.GPENode secondGPENode =
    GPE.GPENode.Load(secondGPENodeId);
    TSoft.TreeNodes competencesInCurrent =
    TSoft.TreeNode.getRelatedNodes(firstGPENode.ID);
    TSoft.TreeNodes competencesInCompared =
    TSoft.TreeNode.getRelatedNodes(secondGPENode.ID);
     
    ArrayList competencesOnlyInCompareedTree = new ArrayList(competencesInCompared);
     
    this.onlyInCurrentDirCompTable.Rows.Clear();
    this.sharedCompTable.Rows.Clear();
    this.onlyInComparedDirCompTable.Rows.Clear();
     
    foreach (TSoft.TreeNode competenceInCurrent in competencesInCurrent)
    {
    TSoft.TreeRelation relInCurrent =
    new TSoft.TreeRelation(firstGPENode.ID, competenceInCurrent.Id);
    Boolean shared = false;
    int shareIndex = 0;
    foreach(TSoft.TreeNode competenceInCompared in competencesOnlyInCompareedTree)
    {
    if (competenceInCompared.Id == competenceInCurrent.Id)
    {
    shared = true;
    break; // Pourquoi break ici?
    }
    shareIndex++;
    }
    if (shared)
    {
    TSoft.TreeRelation relInCompared =
    new TSoft.TreeRelation(secondGPENode.ID, competenceInCurrent.Id);
    competencesOnlyInCompareedTree.RemoveAt(shareIndex);
    this.sharedCompTable.Rows.Add();
    igtbl.UltraGridRow row = this.sharedCompTable.Rows[this.sharedCompTable.Rows.Count - 1];
    // Que fait [this.sharedCompTable.Rows.Count - 1]?
    row.Cells[0].Text = competenceInCurrent.Text;
    int? delta = null;
    int deltaDist = 0;
    int? coefDist = null;
    try
    {
    delta = relInCompared.Value - relInCurrent.Value;
    }
    catch (Exception)
    {}
    if (delta == null)
    {
    row.Cells[1].Text = "N/A";
    deltaDist = 1;
    }
    else if (delta > 0)
    {
    row.Cells[1].Text = "+" + delta.Value.ToString();
    deltaDist = delta.Value;
    coefDist = relInCompared.AcquisitionDifficultyNullable;
    // Que fait AcquisitionDifficultyNullable?
    }
    else
    {
    row.Cells[1].Text = delta.Value.ToString();
    deltaDist = (-delta.Value);
    coefDist = relInCurrent.AcquisitionDifficultyNullable;
    }
    if (coefDist == null)
    {
    coefDist = 1;
    }
    distance += deltaDist * coefDist.Value;
    }
    else
    {
    this.onlyInCurrentDirCompTable.Rows.Add();
    igtbl.UltraGridRow row = this.onlyInCurrentDirCompTable.Rows[this.onlyInCurrentDirCompTable.Rows.Count - 1];
    row.Cells[0].Text = competenceInCurrent.Text;
    try
    {
    distance += relInCurrent.Value * relInCurrent.AcquisitionDifficulty;
    }
    catch (Exception)
    {
    distance += 1;
    }
    }
    }
     
    foreach (TSoft.TreeNode competenceInCompared in competencesOnlyInCompareedTree)
    {
    this.onlyInComparedDirCompTable.Rows.Add();
    igtbl.UltraGridRow row = this.onlyInComparedDirCompTable.Rows[this.onlyInComparedDirCompTable.Rows.Count - 1];
    row.Cells[0].Text = competenceInCompared.Text;
     
    TSoft.TreeRelation relInCompared =
    new TSoft.TreeRelation(secondGPENode.ID, competenceInCompared.Id);
    // Je ne trouve pas treerelation dans msdn, que fait cette méthode?
    try
    {
    distance += relInCompared.Value * relInCompared.AcquisitionDifficulty;
    }
    catch (Exception)
    {
    distance += 1;
    }
    }
     
    this.distanceValue.Text = distance.ToString();
     
    if (firstGPENode is GPE.Job && secondGPENode is GPE.Job)
    {
    int diffVolume =
    ((GPE.Job)secondGPENode).NumberOfPeople - ((GPE.Job)firstGPENode).NumberOfPeople;
    if (diffVolume > 0)
    {
    this.volumeValue.Text = "+" + diffVolume.ToString();
    }
    else
    {
    this.volumeValue.Text = diffVolume.ToString();
    }
    this.volumeLbl.Visible = true;
    this.volumeValueCol.Visible = true;
    }
    else
    {
    this.volumeLbl.Visible = false;
    this.volumeValueCol.Visible = false;
    }
     
    this.diffResultsZone.Visible = true;
    this.diffCompetencesZone.Visible = true;
    }

    lundi 24 mars 2008 14:23