Welcome to MSDN Blogs Sign in | Join | Help

Dr. SharePoint

kirjutan SharePoint ja Project Server 2007 teemadel mida küsitakse või ise teen
Dokumendiliikide ja metadata väljade update

Nõnda, täiendasin seda esialgset koodi paari reaga.

Nimelt kui ülalkirjeldatud originaalkoodi kasutada siis listi juures jääb metada väljadel Display Name uuendamata, seega lisasin funktsiooni UpdateListFields juurde omapoolse täienduse mis on näha allpool kommentaariga //Set display name inside list. Kopeerisin terviklikuse huvides kogu selle updatemise funktsiooni.

Jõudu kasutamisel.

Et antud kood töötaks, peavad olema Content Type’d ja Metadata väljad olema kirjeldatud siintoodud alustel.
Kuidas põhmõtteliselt metadata väljade manageerimine ja uuendamine toimub, on kirjeldasin siin.

private void UpdateListFields(SPList list, SPContentType listCT,
                              SPContentType sourceCT) {
  Log("Starting to update fields ", false);
  foreach (SPFieldLink sourceFieldLink in sourceCT.FieldLinks) {
    //has the field changed? If not, continue.
    if (listCT.FieldLinks[sourceFieldLink.Id]!= null
         && listCT.FieldLinks[sourceFieldLink.Id].SchemaXml
            == sourceFieldLink.SchemaXml) {
      Log("Doing nothing to field \"" + sourceFieldLink.Name
          + "\" from contenttype on :" + list.ParentWebUrl + "/"
          + list.Title, false);
      continue;
    }
    if (!FieldExist(sourceCT, sourceFieldLink)) {
      Log(
        "Doing nothing to field: " + sourceFieldLink.DisplayName
         + " on list " + list.ParentWebUrl
         + "/" + list.Title + " field does not exist (in .Fields[])"
         + " on source content type", false);
      continue;

    }

    if (listCT.FieldLinks[sourceFieldLink.Id] != null) {

      Log("Deleting field \"" + sourceFieldLink.Name
          + "\" from contenttype on :" + list.ParentWebUrl + "/"
          + list.Title, false);

      listCT.FieldLinks.Delete(sourceFieldLink.Id);
      listCT.Update();
    }

    Log("Adding field \"" + sourceFieldLink.Name
        + "\" from contenttype on :" + list.ParentWebUrl
        + "/" + list.Title, false);

    listCT.FieldLinks.Add(new SPFieldLink(
                               sourceCT.Fields[sourceFieldLink.Id]));
    //Set displayname, not set by previus operation
    listCT.FieldLinks[sourceFieldLink.Id].DisplayName
                = sourceCT.FieldLinks[sourceFieldLink.Id].DisplayName;

    listCT.Update();
    Log("Done updating fields ");
    
  }
  foreach (SPFieldLink sourceFieldLink in sourceCT.FieldLinks)
  {
    //Set displayname inside list
    SPField field = list.Fields[sourceFieldLink.Id];
    field.Title = sourceCT.FieldLinks[sourceFieldLink.Id].DisplayName;
    field.Update();
    Log("Done updating field Display Name");
  }
  
}

Ja muide nii ilusat värvilist koodi saab Visual Studiost siia (ehk Windows Live Writerisse) eriti mugavalt selle väikese utiliidi abil.

Posted: Tuesday, September 30, 2008 10:57 PM by Leivo
Leave a Comment

(required) 

(required) 

(optional)

(required) 

  
Enter Code Here: Required

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Page view tracker