Arkivat mujore: Shkurt 2008

Minor Public Announcement: Windows Live Security Settings and Contacting Space Owners

I receive a handful of messages from individuals via the built-in "send a message" function Microsoft provides with live spaces (which also hosts my blog) every month.

About one third of the time, those users have secured their live spaces account such that I cannot reply. This is some kind of anti-spam feature I assume.

</fund>

Shpjegimi i thjeshtë: “Vlera nuk bie brenda intervalit të pritshme.”

UPDATE: An anonymous poster left a great comment about internal names. Be sure to read it.

Kur punon me marrës ngjarje dhe kodin tjetër që referencat artikuj listë SharePoint nëpërmjet modelit objekt, Unë shpesh bëjnë gabime që gjenerojnë këtë gabim në runtime:

Ngarkimin dhe drejtimin Error ngjarje marrës Conchango.xyzzyEventReceiver në xyzzy, Version = 1.0.0.0, Culture = neutral, 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. Megjithatë, one simple explanation is that I’m referencing a field incorrectly. If the name of the field is "Due Date", I must reference it like this in an event receiver:

properties.ListItem["Due Date"]

When I misspell or use the wrong case when referencing the field, SharePoint generates the above mentioned runtime error. Për shembull, this is wrong:

properties.ListItem["due Date"]

</fund>

Abonohen në blogun tim.

Technorati Tags:

End User Quick Tip: Shikime Rendit në një bibliotekë Document, Listë, etj.

Ne mund të, dhe nuk duhet të krijojnë pikëpamjet shumë në listat e SharePoint (bibliotekat dokument, Listat me porosi, etj). SharePoint always lists available views in alphabetical order. We cannot change this using out of the box functionality. If it can be done via customization (dhe unë nuk jam i sigurt se mund të), it’s far to technical for your typical end user.

If you want to control the order in which SharePoint lists available views, simply prepend a number or letter to the view name, si në:

1 – By Material Type
2 – All Documents
3 – Due Date

-ose-

Një – By Material Type
B – All Documents
C – Due Date

I have also created views whose purpose is strictly to feed a KPI. I have been following this naming convention:

Z_KPI_[përshkrim]

That causes my "KPI" views to appear at the bottom of the list.

</fund>

Abonohen në blogun tim.

Technorati Tags: ,

E diel Funny: “Kur unë isha një djalë i vogël”

Si një prind, somewhere along the line I discovered the "When I was a little boy" trick.

Djali im, ndoshta katër ose pesë në kohën, ishte duke luajtur një tullumbace dhe si djemtë më të vegjël që luajnë me balona, he popped it. He was very upset. The world had come to an end. I said to him, "when I was little boy, Unë kisha një tullumbace dhe ajo popped dhe përfundimisht, I got a new balloon." It seemed to help him cope with his loss and led to a fun talk about what it was like when I was a little boy.

That worked well as a consolation technique and I used it a several times over the next period of time. I did get into trouble once when his Monster Rancher 3 creature died. I talked about how my dog, Princ, had died in a car accident. Këtë herë, Përgjigja e tij ishte, "Now I feel bad about two things!" I shied away from using the "when I was a little boy" Teknika për ngushëllimin, pasi që.

Para incidentit vdekur qen, megjithatë, I had also started to use the technique to convince him to do chores. "When I was a little boy, I had to go out and get the newspaper", "clean my room", "get Mommy her coffee cup", etj.

Kjo shumë ishte goxha i suksesshëm për një kohë, but he started to increasingly rebel against the tyranny of my childhood. One event, veçanërisht, marked the end. I told him to bring the garbage cans from curb back to the garage. He argued and I responded, "When I was a little boy, I had to take the garbage back to the garage." He responded, "Oh yeah! Well when you were a little boy, se ishte STUPID!".

</fund>

Abonohen në blogun tim.

Technorati Tags:

Views dhe kolona në Listat dhe Bibliotekat dokument nuk mund të sigurohen

UPDATE (02/29/08): Ky projekt i ri CodePlex duket të sigurojë një metodë për sigurimin kolona individuale: http://www.codeplex.com/SPListDisplaySetting. If you have any experience working with it, ju lutemi të lënë një koment.

Posterat Forum shpesh pyes një pyetje si kjo: "I have a manager view and and a staff view of a list. How do I secure the manager view so that staff can not use it?"

Ata gjithashtu shpesh pyes një pyetje lidhur me: "I want to secure a specific metadata column so that only managers may edit that column while others may not even see it."

These answers apply to both WSS 3.0 dhe Moss:

  • SharePoint nuk japin jashtë-of-the-box mbështetje për sigurimin shikime.
  • SharePoint nuk japin jashtë-of-the-box mbështetje për shtylla të sigurisë.

There are several techniques one can follow to meet these kinds of security requirements. Here’s what I can think of:

  • Use out-of-the-box item level security. Views always honor item level security configuration. Event receivers and/or workflow can automate security assignment.
  • Use personal views for "privileged" views. These are easy enough to set up. Megjithatë, due to their "personal" natyrë, these need to be configured for each user. Use standard security configuration to prevent anyone else from creating a personal view.
  • Përdorni një web dhënave pjesë të parë dhe të zbatojë disa lloj zgjidhje AJAXy sigurisë zvogëlimin.
  • Roll tuaj ekranit funksionalitetin lista dhe përfshijnë zvogëlimin e sigurisë në nivel kolonën.
  • Ndrysho formularët e regjistrimit të të dhënave dhe të përdorin JavaScript në lidhje me modelin e sigurisë për të zbatuar kolona të nivelit të sigurisë zvogëlimin.
  • Use an InfoPath form for data entry. Implement column-level security trimming via web service calls to SharePoint and conditionally hide fields as needed.
  • Roll funksionin tuaj ASP.NET futja e të dhënave që zbaton nivelit të sigurisë kolonë zvogëlimin.

Asnjë prej këtyre opsioneve që janë me të vërtetë e madhe, por ka të paktën një rrugë për të ndjekur në qoftë se keni nevojë për të, edhe në qoftë se është e vështirë.

SHËNIM: Nëse ju shkoni poshtë ndonjë prej këtyre rrugëve, don’t forget about "Actions -> Open with Windows Explorer". You want to be sure that you test with that feature to make sure that it doesn’t work as a "back door" dhe humbjen skemën tuaj të sigurisë.

Nëse ju keni ide të tjera për ose përvojat me kolona sigurimit apo pikëpamjet, ju lutem email mua apo të lënë një koment dhe unë do update këtë postimit si të përshtatshme.

</fund>

Abonohen në blogun tim.

Technorati Tags:

Tip i shpejtë: QZHB Version Numrat FSHZH janë të mikut tuaj

Nëse ju jeni dora-kodim fotografi FSHZH dhe duke bërë një shumë të kodit / import / Testi cikle, use the version number to make your life easier.

Unë e urrej të pranoj atë, por deri në këtë javë, I was always deleting the ADF and re-importing it. This would break my business data columns and make me re-wire them. All unnecessary.

File this under "it’s obvious once you see it".

Shembull:

<LobSystem
xmlns:XSi="http://www.w3.org/2001/XMLSchema-instance" XSi:schemaLocation="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog BDCMetadata.xsd" Lloj="Webservice" Version="1.2.0.0" Emër="xyzzyDocumentReview" xmlns="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">

Ndryshimi se versioni dhe ri-importojë dhe të dhënave ekzistuese të biznesit kolona përdor variantin e përditësuar automatikisht me asnjë konfigurim shtesë të kërkuara.

</fund>

Abonohen në blogun tim.

Technorati Tags:

Zgjidhje: Mbledhës QZHB tregon vetëm për kolonë të rezultateve

Në përpjekjet në vazhdim e mi në sigurimin e një Kolona më e dobishme lookup duke përdorur QZHB, I hit a wall with the BDC picker. If you haven’t see it, the BDC picker is similar to a people picker except that it works with columns of type "business data".

Ju hyni në picker duke klikuar mbi ikonën librin e hapur të një kolonë e të dhënave të biznesit, siç tregohet:

imazh

The above image shows a business data column called "Master Document Id". That column is connected, nëpërmjet QZHB, to a web service. The web service returns two columns of information: Document ID and Title. The business purpose here is to provide a "this document is based on" funksion. Users select a "master" dokument dhe kur ata të shpëtuar, një marrës ngjarje kopjet fushat e meta të dhënave nga mjeshtri referuar.

By default, the BDC picker looks like this when I search for a document whose ID = "38":

clip_image002

Kjo është e dobishme, but not good enough. People don’t think in terms of IDs, they think in terms of titles and/or other meta data. The picker allows you to search on other columns (e.g. Titull) por nuk do të tregojë listën aktuale të titujve të gjetura, vetëm DocId të tyre siç tregohet këtu:

clip_image002[1]

(Shtënë ekran nuk është aq e madhe, sepse unë nuk e marr një kërkim që kthen ndonjë rezultate të vlefshme, por ju mund të shihni se në qoftë se ajo kishte gjetur disa rezultate, ajo vetëm do të kanë treguar së DocId, jo tituj).

I searched high and low for the answer to this and failed. Kolegu im, nderuar Jonathan Bradshaw, had faced and solved this issue. When I reached out to him for help, ai vuri mua në drejtimin e duhur.

Configure the picker to show multiple columns via the "ShowInPicker" prona në FSHZH:

<Pronë Emër="ShowInPicker" Lloj="System.Boolean">i vërtetë</Pronë>

Në më shumë detaje:

  <!-- Titull -->
  <TypeDescriptor TypeName="System.String" Emër="Titull" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Titull</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Prona të paluajtshme>
      <Pronë Emër="DisplayByDefault" Lloj="System.Boolean">i vërtetë</Pronë>
      <Pronë Emër="ShowInPicker" Lloj="System.Boolean">i vërtetë</Pronë>
    </Prona të paluajtshme>
  </TypeDescriptor>

Setting this property does introduce a minor problem. As soon as you set it once, you need to set it for every column you want to show. Në rastin tim, BDC picker showed DocId by default. Megjithatë, once I added "ShowInPicker" për Titull, DocId no longer displayed. I solved that by explicitly setting the ShowInPicker property for Doc ID.

Këtu është rezultat:

imazh

(I’ll explain the odd-looking "168 – CamlSchema.xsd" construction in a future blog post. In short, kjo është një varg concatenated që lejon për një përvojë përdorues paksa më të mirë).

Sigurisht, ka shkruar këtë blog entry, I just did a search for "ShowInPicker" dhe gjeti hite të shumta, duke përfshirë edhe këtë: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. It explains the meaning of that property along with some other good BDC stuff.

</fund>

Abonohen në blogun tim!

Technorati Tags:

I shpejtë & I lehtë: Krijo një dosje dhe të caktojë një Content Type (Ose, Kanë KPIs tuaj dhe të hani ato shumë)

Në mënyrë për të punuar rreth një problem KPI Kam shkruar në lidhje me këtu, 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) përdoruesit përfundimtarë nuk e di ndonjë më të mirë dhe 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, cila nuk eshte fundi i botës.

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. Si rezultat, kjo është një copë tortë për të mbajtur dosje prindi meta data in sync with the KPI-driven meta data from the file itself since the plumbing is already in place. This allows me to have my KPI’s and eat them too 🙂

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 = i ri SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["Content Type ID"] = KpiCT;
  addedFolder.Item.Update();

Për të gjetur aktuale Lloji ID Content, Unë disponim se tipi i përmbajtjes nëpërmjet settings vend dhe kopje / ngjit atë nga URL, siç tregohet:

imazh

</fund>

Abonohen në blogun tim!

Technorati Tags: ,

Quick dhe Easy: Get SPFolder e një SPListItem në një Marresit Event

Unë e urrej të pranoj atë, 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:

privat pavlefshme UpdateParentFolder(SPItemEventProperties Prona të paluajtshme)
{

SPFolder thisItemFolder = properties.ListItem.File.ParentFolder;
thisItemFolder.Item["ZZ Approval Status"] = "Good news, gjithkush!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

Në këtë rast, I’m working with a document library and the properties are coming from an ItemAdded event.

The trick is that you can’t get the SPFolder of the item directly from the item itself (i.e. properties.ListItem.Folder is null). Në vend të kësaj, go to the list item’s associated File and get the File’s folder.

</fund>

Abonohen në blogun tim!

Technorati Tags:

Yet Another Marresit Event Debug Trick

I’m sure I’m not the first person to come up with this. Megjithatë, I haven’t noticed anyone publish a trick like this since I started paying close attention to the community last July. Kështu, Unë mendova se do të postoj atë këtë tip të shpejtë dhe të lehtë debug.

I’m working on an event receiver that started to generate this error in the 12 zgjua:

Ngarkimin dhe drejtimin Error ngjarje marrës Conchango.xyzzyEventReceiver në xyzzy, Version = 1.0.0.0, Culture = neutral, PublicKeyToken=blahbalhbalh. Additional information is below. : Object reference nuk është caktuar për një shembull të një objekti.

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.

I tried this solution to get my pdb in there with hopes that SharePoint’s 12 hive would show the stack trace, but no luck. I don’t know if it’s possible and if someone does, please let me know 🙂

I know it’s possible to write your own log messages to the 12 zgjua. Frankly, I wanted something a little less scary and quicker to implement.

It occurred to me that I could at least get some basic trace information by catching and re-throwing generic exceptions like this:

  mundohem {
    UpdateEditionDate(Prona të paluajtshme);
  }
  kap (Exception e)
  {
    hedh i ri Exception("Dispatcher, UpdateEditionDate(): Exception: [" + e.ToString() + "].");
  }

This showed up in the 12 hive thusly:

Ngarkimin dhe drejtimin Error ngjarje marrës Conchango.xyzzyEventReceiver në xyzzy, Version = 1.0.0.0, Culture = neutral, PublicKeyToken=blahblahblah. Additional information is below. : Dispatcher, UpdateEditionDate(): Exception: [System.NullReferenceException: Object reference nuk është caktuar për një shembull të një objekti. at Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(Pronat SPItemEventProperties) at Conchango.xyzzyManagementEventReceiver.Dispatcher(Pronat SPItemEventProperties, String eventDescription)].

That gave me all the detail I needed to track down that particular problem and I expect to use it a lot going forward.

</fund>

Abonohen në blogun tim!