Կարգավիճակի արխիվներ: Sharepoint զարգացում

Պարզ բացատրություն: “Value չի ընկնում շրջանակներում սպասվող տիրույթում է.”

ԹԱՐՄԱՑՆԵԼ: An anonymous poster left a great comment about internal names. Be sure to read it.

Երբ աշխատում միջոցառման ստացողի եւ այլ կոդը, որը հղում Sharepoint ցուցակի նյութեր միջոցով օբյեկտային մոդելը, Ես հաճախ սխալներ, որոնք առաջացնում այդ սխալը է: Runtime:

Error բեռնում եւ վազում միջոցառումը ընդունիչ Conchango.xyzzyEventReceiver է xyzzy, Տարբերակ = 1.0.0.0, Մշակույթ = չեզոք, PublicKeyToken = 0dc50a750396c3ac. Additional information is below. : Value does not fall within the expected range.

I think this is a fairly generic error that is potentially caused many different ways. Սակայն, one simple explanation is that I’m referencing a field incorrectly. If the name of the field is "Due Date", Ես պետք է հղում, որ նման այս իրադարձության ստացողի:

properties.ListItem["Due Date"]

Երբ ես տառասխալ անել կամ օգտագործել սխալ դեպքը, երբ հիշատակում դաշտը, SharePoint generates the above mentioned runtime error. Օրինակ,, սա սխալ է:

properties.ListItem["due Date"]

</վերջ>

Անդամագրվել իմ բլոգում.

Արորդիների Tags:

Արագ & Հեշտ: Ստեղծել թղթապանակ եւ վերագրելը մի Content type (Կամ, Ունեք Ձեր KPIs կերեք նրանց Too)

Որպեսզի աշխատանքի շուրջ KPI խնդիրը Ես գրել այստեղ:, I did some testing and discovered that KPI’s work against folders with meta data in the same way that they work against documents or list items. I proved it out by creating a new content type based on the folder content type and then added a few fields. I created some indicators and proved to myself that KPIs work as expected. This was welcome news. It’s not perfect, because the drill-down you get from the KPI against the folders is not exactly what you want. This isn’t too much a drawback in my case because 1) Վերջ օգտվողները չգիտեմ որեւէ ավելի ու 2) the drill-down goes to a folder. They click the folder name and they are at the item. It’s two clicks instead of one, որը ոչ թե աշխարհի վերջը.

This flowed nicely with the work I was doing. I am creating a folder for every document that gets uploaded. This is done via an event receiver. Արդյունքում, դա մի կտոր տորթ պահել ծնող պահոցը ի meta data in sync with the KPI-driven meta data from the file itself since the plumbing is already in place. Սա թույլ է տալիս ինձ, որ իմ KPI եւ ուտել նրանց էլ 🙂

I modified the event receiver to add the folder and then set this new folder’s content type to my custom KPI-friendly content type. This bit of code did the trick:

 SPFolderCollection srcFolders = targetWeb.GetFolder("Documents").SubFolders;
  SPFolder addedFolder = srcFolders.Add(properties.ListItem.ID.ToString());
  SPContentTypeId kpiCT = նոր SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["Content Type ID"] = KpiCT;
  addedFolder.Item.Update();

To կմնա փաստացի Content type ID-ն, I մուտք, որ բովանդակության տեսակը միջոցով Տեղում պարամետրերով եւ տետրերի / pasted այն է հղում ինչպես ցուցադրված է:

պատկեր

</վերջ>

Անդամագրվել իմ բլոգում!

Արորդիների Tags: ,

Արագ եւ հեշտ: Ստացեք SPFolder վրա SPListItem է միջոցառման ընդունիչ

Ես ատում ընդունել այն:, but I struggled with this one all day. My event receiver needs to update a field of its parent folder. This little bit shows how to do it:

անձնական անվավեր UpdateParentFolder(SPItemEventProperties հատկություններ)
{

SPFolder thisItemFolder = properties.ListItem.File.ParentFolder;
thisItemFolder.Item[«ZZ հաստատում կարգավիճակը"] = «Լավ լուր, բոլորը!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

Այս դեպքում, Ես աշխատում է մի փաստաթղթի գրադարան եւ հատկությունների են գալիս որպես ItemAdded իրադարձության.

Որ հնարք է, որ դուք չեք կարող ստանալ SPFolder ին կետի անմիջապես կետի մեջ (i.e. properties.ListItem.Folder առ). Փոխարեն, գնալ ցանկ Նյութի վերաբերյալ ի ասոցացված ֆայլը եւ ստանալ ֆայլի ի թղթապանակը.

</վերջ>

Անդամագրվել իմ բլոգում!

Արորդիների Tags:

Yet Another Event ընդունիչ Debug Trick

I’m sure I’m not the first person to come up with this. Սակայն, I haven’t noticed anyone publish a trick like this since I started paying close attention to the community last July. Այնքան, Մտածեցի ես փակցնելու համար սա արագ եւ հեշտ debug հուշում.

Ես աշխատում միջոցառման ստացողի, որը սկսել է առաջացնում այդ սխալի է 12 փեթակ:

Error բեռնում եւ վազում միջոցառումը ընդունիչ Conchango.xyzzyEventReceiver է xyzzy, Տարբերակ = 1.0.0.0, Մշակույթ = չեզոք, PublicKeyToken = blahbalhbalh. Additional information is below. : Object հղում չէ որեւէ ատյանի օբյեկտի.

I didn’t know where I had introduced this bug because I had done too many things in one of my code/deploy/test cycles.

Ես փորձեցի Այս լուծումը ստանալ իմ pdb այնտեղ հետ կապված հույսերը, որ Sharepoint է 12 փեթակ էր ցույց տալ դեղ հետք, բայց ոչ luck. I don’t know if it’s possible and if someone does, խնդրեմ ինձ տեղյակ պահեք 🙂

Ես գիտեմ, որ դա հնարավոր է գրեք ձեր սեփական տեղեկամատյան Հաղորդագրություններ համար 12 փեթակ. Frankly, Ես ուզում էի մի բան, մի քիչ պակաս Մարտական ​​Մոլախաղեր եւ ավելի արագ իրականացնել.

Այն առաջացել է ինձ, որ ես կարող եմ գոնե որոշ հիմնական տեղեկություններ, հետք են բռնում, եւ կրկին նետում ջեներիկներ բացառություններ նման:

  փորձել {
    UpdateEditionDate(հատկություններ);
  }
  բռնել (Բացառություն իսկ)
  {
    նետում նոր Բացառություն("Dispatcher, UpdateEditionDate(): Բացառություն: [" + e.ToString() + "].");
  }

Սա ցույց տվեց, վեր է 12 փեթակ thusly:

Error բեռնում եւ վազում միջոցառումը ընդունիչ Conchango.xyzzyEventReceiver է xyzzy, Տարբերակ = 1.0.0.0, Մշակույթ = չեզոք, PublicKeyToken = blahblahblah. Additional information is below. : Դիսպետչեր, UpdateEditionDate(): Բացառություն: [System.NullReferenceException: Object հղում չէ որեւէ ատյանի օբյեկտի. at Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(SPItemEventProperties հատկությունները) at Conchango.xyzzyManagementEventReceiver.Dispatcher(SPItemEventProperties հատկությունները, String eventDescription)].

Դա ինձ բոլոր մանրամասն I անհրաժեշտ հետեւելու են տվյալ խնդիրը, եւ ես ակնկալում օգտագործել այն շատ գնում է առաջ.

</վերջ>

Անդամագրվել իմ բլոգում!

Լուծում: SPQuery չի Որոնել պանակները

This past week I was implementing an "evolving" solution for a client that uses BDC and SPQuery and ran into some difficulty using SPQuery against a document library containing folders. Ստորին գիծ: assign "recursive" եւ դիտիր հատկանիշի վերաբերյալ հարցումներ.

Իմ սցենարը:

  • Երկուշաբթի, Ես վերբեռնել փաստաթուղթը եւ մատակարարման որոշ meta տվյալներ.
  • Հետեւյալ շաբաթ, I upload a new document. Much of this new document’s meta data is based on the document I uploaded on Monday (which we call the "master document").
  • Մենք ստեղծել վեբ ծառայության Շինությունների ճակատների, որոնք ապահովում են BDC - ընկերական միջերեսի ցուցակում, որպեսզի օգտվողները կարող են հեշտությամբ տեղադրել այդ Երկուշաբթի փաստաթուղթը միջոցով տիտղոսը որոնել.
  • A BDC data column provides a friendly user interface. (Սա մաս է կազմում իմ փորձ է օգտագործել BDC համար ավելի ընկերական Փնտրել սյունակ).

Վերջնական BDC Ֆասադային ծառայությունը օգտագործում է հարցմանը, ինչպես դա անել Որոնում:

 // Օգտագործված U2U գործիք է աջակցել առաջացնող այս CAML հարցմանը.
      oQuery.Query =
        "<Որտեղ>";

      եթե (titleFilter.Length > 0)
        oQuery.Query   =
          "  <Իսկ>";

      oQuery.Query   =
        "    <Իսկ>" +
        "      <Geq>" +
        "        <FieldRef Name=\"DocumentId\" />" +
        "        <Value Type=\"Text\">" + MinID + "</Արժեք>" +
        "      </Geq>" +
        "      <Leq>" +
        "        <FieldRef Name=\"DocumentId\" />" +
        "        <Value Type=\"Text\">" + maxId + "</Արժեք>" +
        "      </Leq>" +
        "    </Իսկ>";

      եթե (titleFilter.Length > 0)
        oQuery.Query   =
          "    <Պարունակում է>" +
          "      <FieldRef Name=\"Title\" />" +
          "      <Value Type=\"Text\">" + titleFilter + "</Արժեք>" +
          "    </Պարունակում է>" +
          "  </Իսկ>";
      oQuery.Query   =
        "</Որտեղ>";

Ընթացքում նախնական փուլում զարգացման, this worked great. Սակայն, մենք ներկայացրել պանակները մեջ տեղեկագրքի լուծելու որոշ խնդիրներ, եւ հանկարծ, my BDC picker wouldn’t return any results. I tracked this down to the fact that the SPQuery would never return any results. We used folders primarily to allow multiple files with the same name to be uploaded but with different meta data. When the file is uploaded, մենք ստեղծել թղթապանակը հիման վրա ID-ի ցանկ Նյութի վերաբերյալ, իսկ հետո տեղափոխել ֆայլը չկա (Ես գրել է այդ մասին այստեղ; մենք ունեինք խառը արդյունքները Այս մոտեցման, բայց ընդհանուր առմամբ, այն աշխատում նաեւ). The user don’t care about folders and in fact, don’t really understand that there are any folders. We have configured all the views on the library to show items without regard to folders.

I hit this problem twice as the technical implementation evolved and solved it differently each time. The first time, I wasn’t using the CONTAINS operator in the query. Without a CONTAINS operator, I was able to solve the problem by specifying the view on the SPQuery’s contructor. Instead of using the default constructor:

SPList oList Դուք web.Lists["Documents"];

SPQuery oQuery = նոր SPQuery();

Ես դրա փոխարեն օգտագործվում է մի շինարար է, որ նշված նպատակով:

SPList oList Դուք web.Lists["Documents"];

SPQuery oQuery = նոր SPQuery(oList.Views["All Documents"]);

Այդ լուծել խնդիրը եւ ես սկսեցի ստանալ իմ արդյունքներ.

I then added the CONTAINS operator into the mix and it broke again. It turns out that the CONTAINS operator, այնքանով, որքանով ես կարող եմ ասել, չի աշխատում, ինչպես նաեւ նպատակ է նույն կերպ, ինչպես նաեւ մի պարզ GEQ / LEQ operators. I did some searching and learned that the query’s ViewAttributes should be set to "Recursive", ինչպես:

oQuery.ViewAttributes = "Scope=\"Recursive\"";

That solved the problem for CONTAINS. Ի դեպ, սա էլ լուծվել իմ օրիգինալ որոնման խնդիրը, եւ եթե ես նշվում է recursive հատկանիշը առաջին անգամ, Ես չէի վազում մեջ է կրկին.

Այն փաստը, որ մի տեսարան հիմնված SPQuery աշխատում, որոշ օպերատորներ (GEQ / LEQ) եւ ոչ թե մյուսները (Պարունակում է), զուգորդված է նրանով, որ KPIs չեն կարծես աշխատել բոլորի հետ, Թղթապանակ պարունակող փաստաթղթերի գրադարանների տանում եմ հավատալ, որ SPQuery ունի որոշ խնդիրներ orthogonality.

Հատուկ շնորհակալություն:

  • Լավ folks է U2U եւ նրանց հարցում գործիք.
  • Michael Hoffer ի մեծ "սովորում են անում" օրագրում Հաղորդագրություն, Դիտողություններն ու պատասխան.

</վերջ>

Անդամագրվել իմ բլոգում!

MOSS KPI bug? Ցուցանիշ List կապված Փաստաթուղթ գրադարանի հետ Թղթապանակներ

ԹԱՐՄԱՑՆԵԼ 02/29/08: I solved this problem by creating a folder and then assigning a content type to the folder which has the meta data I need for the KPIs. Ես նկարագրում, որ մի քիչ ավելի մանրամասն այստեղ.

We have implemented a technical solution where users upload documents to a document library. An event receiver creates a directory and moves the file to that directory (օգտագործելով տեխնիկան նման ինչ ես գրել այստեղ). We’ve successfully navigated around the potential issues caused by event receivers that rename uploaded files (հիմնականում այն ​​պատճառով, որ երբեք օգտվողները կսկսեն իրենց փաստաթուղթ, սեղմելով "New" բայց դրա փոխարեն ստեղծել Վիդեո տեղում, ապա դրանք վերբեռնել).

Այդ meta տվյալներ այդ փաստաթղթերի մեջ ներառում է մի Այո / Ոչ կայքը սյունը կոչվում "Urgent" and another site column called "Status". We need to meet a business requirement that shows the percentage of "Urgent" փաստաթղթերը, որոնց կարգավիճակը «սպասում»:.

Դա սովորաբար պարզ է անել եւ ես նկարագրել մի բան շատ նման է Sharepoint որսկան շուն ինչպես շատ էկրանի կրակոցներով, եթե դու շահագրգիռ.

Մի ընկույզի կեղլծ կճեպ, Ես հետեւյալը:

  • Ստեղծել տեսակետը մասին doc գրադարանի կոչվում էր «սպասում»:.
  • Կարգավորել տեսակետը անտեսել թղթապանակը կառուցվածքը.
  • Ստեղծել KPI ցուցակ.
  • Ստեղծել ցուցանիշը է, որ ցուցակում տեղ են վավեր lib եւ որ «վճիռ" դիտել.

This simply does not work. The KPI shows my target (e.g. հինգ հրատապ փաստաթղթերը) but always shows the actual number of urgent documents as zero. Paradoxically, եթե դուք ակոս ներքեւ մանրամասները, it shows the five urgent documents in the list. I created a very simple scenario with two documents, one in a folder and one not. Here is the screen shot:

պատկեր

Վերը էկրան shot պարզորոշ ցույց է տալիս, որ կան երկու փաստաթղթերը տեսակետից, սակայն, «արժեքը" is one. The "CamlSchema" ինչպես դատարկ Id փաստաթուղթը գտնվում է սկզբնական թղթապանակը, իսկ մյուսը գտնվում է թղթապանակում անունով »: 84".

Պարզվում է ինձ, որ թեեւ դուք նշեք տեսակետը, ապա KPI չի պահպանել "Ցույց տալ բոլոր կետերը, առանց պանակները" համար, եւ դրա փոխարեն, confines ինքն է սկզբնական թղթապանակը.

Եթե ​​ես եմ սխալվում, խնդրեմ թողնել ինձ մի գիծ կամ չվերաբերող մեկնաբանություններ.

</վերջ>

Անդամագրվել իմ բլոգում!

Արորդիների Tags:

Լուծում Problem: “FileNotFoundException” Իմ Feature ստացողի.

I was working on a feature last week that would add some event receivers to a specific list instance. (Ես Blogged մի քիչ այդ ցուցակից ստացողի այստեղ).

Օգտագործելով հրամանի տող, Ես կարող եմ տեղադրել հնարավորությունը առանց սխալի (Բայց տես ստորեւ համար թաքնված սխալի). When I tried to deploy the feature on the site, MOSS complained of a "FileNotFoundException" սխալ. This blog entry describes how I solved it.

Սա սխալ է, որ MOSS ցույց ինձ վեբ բրաուզերի:

Feature ‘b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ could not be installed because the loading of event receiver assembly "xyzzyFeatureReceiver_0" տապալվեց: System.IO.FileNotFoundException: Could not load file or assembly ‘xyzzyFeatureReceiver_0’ կամ դրա կախվածությունը. Համակարգը չի կարող գտնել ֆայլը նշված.
Ֆայլի անունը: ‘xyzzyFeatureReceiver_0’
at System.Reflection.Assembly.nLoad(AssemblyName Ֆայլի, String codebase, Ապացույցներ assemblySecurity, Վեհաժողովը locationHint, StackCrawlMark& դեղ հողը, Բուլյան throwOnFileNotFound, Բուլյան forIntrospection)
at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Ապացույցներ assemblySecurity, StackCrawlMark& դեղ հողը, Բուլյան forIntrospection)
at System.Reflection.Assembly.InternalLoad(String assemblyString, Ապացույցներ assemblySecurity, StackCrawlMark& դեղ հողը, Բուլյան forIntrospection)
at System.Reflection.Assembly.Load(String assemblyString)
at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Վեհաժողովը պարտադիր անտառահատումները անջատված.
Որպեսզի ժողովի կապում անհաջողության logging, սահմանել ռեգիստրային արժեքը [HKLM Software Microsoft Fusion!EnableLog] (DWORD) դեպի 1.
Նշում: Կա մի կատարում տույժը կապված հավաքների կապում ձախողումը հատումների.
Դիմել այս հնարավորությունը դուրս, հանել ռեգիստրային արժեքը [HKLM Software Microsoft Fusion!EnableLog].

Troubleshoot խնդիրները Windows SharePoint ծառայություններ.

Ես գիտեմ, թե ինչպես պետք է միտումնավոր պատճառել այդ սխալը: don’t install the assembly in the GAC. Սակայն, it was in the GAC. I normally install assemblies into the GAC by dragging them into the c:\windows\assembly folder using windows explorer. I’ve never felt 100% հարմարավետ անում է, որովհետեւ ես միշտ էլ մտածեցի, որ gacutil գոյություն դա պատճառ … so I tried that. It made no difference.

Ես փնտրում է Internets եւ գտել այս գրառումը: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

Պաստառի տեղի է օգտագործելով նույն արմատային քիչ կոդը (ներսից WSS գրքի այս ցուցակում) so that was a hopeful sign. Սակայն, առաջարկով զարդարում ժողովին հետ [ժողով: ] directive didn’t make sense to me. I tried it anyway and I was right. It made no difference.

Then I noticed that my class definition was not public. I made it public and that made no difference.

Հաջորդ, I went to the trouble of enabling the "assembly bind failure log" (հետո օգտակար եւ ճշգրիտ ցուցումների նախատեսված) and this is where things started to get interesting. That log shows me that the runtime is searching everywhere on that server for my assembly. It even appears to be searching for it in my medicine cabinet. Սակայն … այն չի փնտրում դրա համար, որ GAC.

I put on my winter jacket and go searching the Internets again and find that someone has had this problem too. The lengthy discussion in that posting peters off into nothing and I can’t find a solution.

I move my assembly into one of the places the log claims it’s searching and I make a little more progress. I’m rewarded with a new error in the browser when I try to activate the feature:

Failed to create feature receiver object from assembly "xyzzyFeatureReceiver_0", type "Conchango.xyzzyFeatureReceiver" եւ խաղարկային b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Value կարող լինել առ.
Պարամետր անունը: տիպ
at System.Activator.CreateInstance(Type տեսակը, Բուլյան nonPublic)
at System.Activator.CreateInstance(Type տեսակը)
at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Troubleshoot խնդիրները Windows SharePoint ծառայություններ.

Ժամանակը մի վերջին մեկնելու է Internets!

Այս անգամ ես պարզել,, predictably բավարար, that MOSS issues this error because the assembly is not in GAC.

Ես ուզում եմ ստանալ մի բան, դրական դուրս եւ փորձել զգալ մի քիչ հպարտ եմ, որ ես եմ ստեղծել այն Ընդհատակում րդ MSIL հավաքների, but it’s not working. I’m just plain annoyed. I find myself muttering "chicken or the egg" տակ իմ շունչը.

I finally decide to punt. I create an entirely new project and copy/paste the code from the incredible-cloaked-from-the-GAC-assembly non-working project over to this new project. (I look for a build flag called something like "hide from assembly binding if installed in the GAC" բայց չի կարող գտնել մեկին).

Ես տեղադրել առանձնահատկությունը եւ ակտիվացրեք եւ … այն աշխատում! Այնքան, հետո այդ, I had to basically ‘reboot’ my project. Սա եւս մեկ պատճառ, թե ինչու եմ ատում համակարգիչներ.

I did learn something useful from this. I had been installing features using the stsadm command line all day long and been using the "-force" option out of habit. Ինչ - ինչ պատճառներով, I did not use the -force option when I installed the new project. Այս անգամ, Ես իրականում, truly forget to copy this new project’s assembly into the GAC. Արդյունքում, I received that "FielNotFoundException" սխալ. Այս անգամ, Ես այն stsadm, not when I tried to activate the feature via the web browser. Այնքան, -force actually plays two roles. It allows you to re-install an existing feature. It also allows you to install a buggy feature that cannot work at runtime by suppressing the error. It probably says as much in the help somewhere but I never noticed it.

</վերջ>

Արագ & Հեշտ: Վերանվանել Uploaded ֆայլը SharePoint օբյեկտը մոդել միջոցով Event ստացողի

ԹԱՐՄԱՑՆԵԼ: This works but there are significant limitations which are described in the comments. This may still be useful in some cirumstances.

ԹԱՐՄԱՑՆԵԼ 2: Իմ ներկա նախագծին, users always upload documents. Արդյունքում, I don’t run into a problem where MS Word is running and thinks that the file was renamed on it. I did run into a problem, "the file was modified by someone else" and solved this via a simple semaphore type flag. Users need to change a meta data field from its default value to something else. The itemupdated() ընդունիչ նայում է վավեր արժեք են մինչեւ փաստացի իրականացնելու վերանվանել եւ դրանից հետո, I have not had any problems. Your mileage may vary.

I have a client requirement to change the name of files uploaded to a specific document library to conform with a particular naming convention. The API does not provide a "rename()" մեթոդ. Փոխարեն, մենք օգտագործում "MoveTo(…)". Here is a minimal bit of code to accomplish this:

 հասարակություն ոտնատակ տալ անվավեր ItemAdded(SPItemEventProperties հատկություններ)
        {
            SPFile f = properties.ListItem.File;

            f.MoveTo(properties.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

The only tricky bit is the "properties.ListItem.ParentList.RootFolder.Url". The MoveTo() method requires a URL. That mashed up string points me to the root folder of my current document library. This allows me to avoid any hard coding in my event receiver.

Սա ավելի օգտակար տարբերակ է, որը չի նույն բանը, but assigns the name of the file to "Title":

 հասարակություն ոտնատակ տալ անվավեր ItemAdded(SPItemEventProperties հատկություններ)
        {
            DisableEventFiring();

            // Վերագր կոչում այս նյութի անունով ֆայլի մեջ.
 // Նկատի ունեցեք,: Սա նշանակում պետք է տեղի ունենա, նախքան մենք փոփոխել ֆայլը ինքը.
 // Հեռախոսային թարմացում() ին SPFile կարծես չեղյալ հատկությունների մեջ
 // ինչ - որ իմաստով.  Updates to "Title" չհաջողվեց մինչեւ այդ փոփոխության (եւ թարմացնել() կոչ)
 // տեղափոխվել դիմաց փոփոխության է ֆայլի անունը.
            properties.ListItem["Title"] = Properties.ListItem.File.Name;

            properties.ListItem.Update();

            SPFile f = properties.ListItem.File;

            // Ստացեք երկարաձգում է ֆայլը.  Մենք պետք է, որ ավելի ուշ.
 լարային spfileExt = նոր File Info(f.Name).Երկարացնելը;

            // Վերանվանել ֆայլը է ցանկ Նյութի ծանոթյություններ ID եւ օգտագործման ֆայլի ընդլայնում է պահել
 // որ մասը անձեռնմխելի.
            f.MoveTo(properties.ListItem.ParentList.RootFolder.Url +
                "/" + properties.ListItem["ID"] + spfileExt);

            // Կատարել է քայլ.
            f.Update();

            EnableEventFiring();
        }

Quick Հուշում: Content Հարցման Web Part, Որոնվող սյունակի արժեքը եւ XSL

I have a column name in a content type named "Real Estate Location".

That column is of type "lookup".

Ես փոփոխվել <CommonViewFields> եւ ItemStyle.xsl ցույց սյունը.

Պարզ <xsl:արժեք է ընտրել =…> վերադարձնում վերադառնալ ներքին արժեք է, որը ներառում է դասական պաշտոնների տվյալները, օրինակ:

1;#Miami

Ստանալ մարդու ընկերական արժեքը, օգտագործել xsl ենթատող հետո, ինչպես ցուցադրված է:

<xsl:value-of select="substring-after(@ Real_x005F_x0020_Estate_x005F_x0020_Location,'.')"></xsl:արժեք է>

Օգտագործեք այս մեթոդը, երբ դուք աշխատում են հետ Փնտրել արժեքների XSL transforms եւ պետք է ստանալ մարդու ընկերական արժեքը.

<Խաղի տեւողությունը րոպեներով />

Արորդիների Tags: , ,

Արագ եւ հեշտ: Որոշել ներքին սյունակ անունը մի կայքի սյունակում

ԹԱՐՄԱՑՆԵԼ: Jeremy Thake ն Blogged մասին, եւ համակերպվել որոշ կոդը համար կոնսոլից դիմում որը ցույց է տալիս ներքին անունները.

I was trying to get a content query web part to display a due date from a task and because the screen label is "Due Date", Ես ենթադրել, որ շարասյունը անունը օգտագործել <CommonViewFields> is "Due_x0020_Date".

Սխալ!

The real column name in this case was "DueDate".

Ինչպես եմ գտնել այն? I re-read Heather Սողոմոնի սեփական օրագիրը գրառումը փոփոխող CQWP to show additional columns of data. She describes this process at step #13. Trust it. It’s correct. At least, it was correct for me. I did not trust it at first for another column with a much longer name.

I say "Trust it" because I did not trust it and probably wasted near two hours butting my head up against a wall. After I resolved the "DueDate" անուն, Ես ուզում եմ ավելացնել եւս դաշտ <CommonViewFields>. Using the Solomon technique, I was getting a column name like "XYZ_x0020_Project_x0020_Due_x00".

Ես մտածեցի ինքս ինձ, that’s clearly a truncated name. I went ahead and un-truncated it with no success. I finally used the seemingly truncated name and it worked.

Bonus tip: Երբ ես աշխատում CQWP, եթե ես ավելացրել է վատ ներքին անունը <CommonViewFields>, the CQWP would tell me that the query had returned no results. Սակայն, եթե ես ավելացրել է տվյալների տեսակի վրա, որպեսզի դաշտային անունը, it would return a result. Adding the data type actually masked a problem since I was referencing a non-existent field. I could add it, բայց երբ ես փորձեցի ցույց տալ իր արժեքը, I would always get a blank.

Սա չի դիմակ Սխալը:

<CommonViewFields>Due_x0020_Date;</CommonViewfields>

Սա այն դիմակ է սխալը:

<CommonViewFields>Due_x0020_Date,Datetime;</CommonViewfields>

</վերջ>