How should I be using the TreeNode.Update method?

Gabriel Fuller asked on September 17, 2014 21:14

I am trying to run the attached code to update some data for a particular document type but it is not actually updating anything.

My currentDocumentNodeId() method is pulling back a NodeId based on some other criteria and then each of these Nodes that it is getting is of the type HG.DocumentLibraryItem which have the columns IsPublic, IsRepMining, IsRepPower, IsRepProcess, and IsRepFlexStream. But when I call the update method and then pull back those Columns in the SQL table for this Custom Document Type, the values are all Null. Each of those columns in the HG.DocumentLibraryItem document type are set to boolean I have tried using the Node.SetValue() method and setting it to true and 1; neither way works to update that column.

Any ideas what I am doing wrong? Am I doing the call correctly?

See my code below:

public static void GetDocumentAreaAssignments()
{
    var cmd = new SqlCommand
    {
        CommandText ="This is pulling back 2 rows, one with Id and one with Text",
        CommandType = CommandType.Text,
        Connection = OldDbConnection
    };
    OldDbConnection.Open();

    try
    {
        using (SqlDataReader rdr = cmd.ExecuteReader())
        {
            var count = 0;
            while (rdr.Read())
            {

                try
                {
                    var documentId = TryGetValue(rdr, 0, 0);
                    var areaAssignment = TryGetValue(rdr, 1, "");

                    var currentDocumentNodeId = GetNodeIdForOldDocumentId(documentId);
                    var node = currentDocumentNodeId == 0
                        ? null
                        : Provider.SelectSingleNode(currentDocumentNodeId);

                    if (node != null)
                    {
                        switch (areaAssignment.ToLower())
                        {
                            case "rep mining":
                                node.SetValue("IsRepMining", 1);
                                break;
                            case "rep power":
                                node.SetValue("IsRepPower", 1);
                                break;
                            case "rep process":
                                node.SetValue("IsRepProcess", 1);
                                break;
                            case "rep flexStream":
                                node.SetValue("IsFlexStream", 1);
                                break;
                            case "public":
                                node.SetValue("IsPublic", 1);
                                break;
                        }
                        node.Update();
                        Console.WriteLine("Changed Areas for Node {0}; item {1} complete", node.NodeID,
                            count + 1);
                    }

                }
                catch (Exception ex)
                {

                }
                count++;
            }
        }
    }
    catch (Exception)
    {
    }
    OldDbConnection.Close();
}

Recent Answers


Brenden Kehren answered on September 18, 2014 05:50

What version are you using? Have you checked out the DocumentQuery API?

0 votesVote for this answer Mark as a Correct answer

   Please, sign in to be able to submit a new answer.