Buwanang Archive: Pebrero 2008

Minor Anunsyo ng Pampublikong: Windows Live Mga Setting ng Seguridad at Pakikipag-ugnay sa May-ari ng Space

I receive a handful of messages from individuals via the built-in "send a message" function na ang Microsoft ay nagbibigay ng live na may mga puwang (saan Nagho-host din ang aking blog) bawat buwan.

Tungkol sa isang-katlo ng mga oras, those users have secured their live spaces account such that I cannot reply. This is some kind of anti-spam feature I assume.

</dulo>

Simple Paliwanag: “Halaga ay hindi mahulog sa loob ng inaasahang saklaw.”

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

Kapag nagtatrabaho sa receiver kaganapan at iba pang code na sumasangguni sa SharePoint listahan ng mga item sa pamamagitan ng bagay na modelo, Ako madalas gumawa ng mga pagkakamali na bumubuo ng mga error na ito sa runtime:

Error sa paglo-load at tumatakbo kaganapan receiver Conchango.xyzzyEventReceiver sa xyzzy, Bersyon = 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. Gayunman, one simple explanation is that I’m referencing a field incorrectly. If the name of the field is "Due Date", Dapat ko bang isangguni ito tulad ng ito sa isang receiver kaganapan:

properties.ListItem["Due Date"]

Kapag ako bumaybay nang pamali o gamitin sa maling kaso kapag tumutukoy sa mga patlang, SharePoint generates the above mentioned runtime error. Halimbawa, ito ang mali:

properties.ListItem["due Date"]

</dulo>

Mag-subscribe sa aking blog.

Technorati Tags:

End User Quick Tip: Pagbukud-bukurin Pananaw sa isang Library Dokumento, Listahan, at iba pa.

Makakaya namin, dapat at huwag lumikha ng maraming mga tanawin sa SharePoint listahan (dokumento aklatan, custom na mga listahan, at iba pa). 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 (at hindi ako sigurado kaya nito), ito ay malayo sa mga teknikal na para sa iyong mga tipikal na end user.

Kung nais mong kontrolin ang pagkakasunod-sunod na kung saan ay naglilista SharePoint magagamit tanawin, lamang prepend isang numero o letra ng pangalan pagtingin, tulad ng sa:

1 – Sa pamamagitan ng Material Uri
2 – Lahat ng mga Dokumento
3 – Takdang Petsa

-o-

Ang isang – Sa pamamagitan ng Material Uri
B – Lahat ng mga Dokumento
C – Takdang Petsa

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

Z_KPI_[paglalarawan]

That causes my "KPI" mga tanawin na lalabas sa ibaba ng listahan.

</dulo>

Mag-subscribe sa aking blog.

Technorati Tags: ,

Linggo ng nakakatawang: “Kapag ako Was isang Little Boy”

Bilang isang magulang, somewhere along the line I discovered the "When I was a little boy" trick.

Ang aking anak na lalaki, marahil apat o limang sa oras, ay naglalaro ng isang lobo at tulad ng karamihan sa maliliit na mga lalaki na maglaro na may mga lobo, he popped it. He was very upset. The world had come to an end. I said to him, "when I was little boy, Ako ay nagkaroon ng isang lobo at pop ito at malaon, 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, Prinsipe, had died in a car accident. Oras na ito, ang kanyang tugon ay, "Now I feel bad about two things!" I shied away from using the "when I was a little boy" pamamaraan para sa pag-aliw matapos na.

Bago sa patay insidente aso, gayunman, 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", at iba pa.

Ito ay masyadong medyo matagumpay para sa isang habang, but he started to increasingly rebel against the tyranny of my childhood. One event, lalo na, 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, na noon ay bobo!".

</dulo>

Mag-subscribe sa aking blog.

Technorati Tags:

Pananaw at Mga Hanay sa Mga Listahan ng Dokumento at Mga Aklatan Hindi Ma-secure

I-UPDATE (02/29/08): Ang bagong proyekto codeplex tila na magbigay ng isang pamamaraan para sa pag-secure ng mga indibidwal na mga haligi: http://www.codeplex.com/SPListDisplaySetting. If you have any experience working with it, mangyaring mag-iwan ng komento.

Forum ng poster madalas magtanong ganito: "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?"

Sila din ang mga madalas itanong sa isang kaugnay na katanungan: "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 at Moss:

  • SharePoint ay hindi nagbibigay ng mga out-of-the-box na suporta para sa pag-secure ng mga tanawin.
  • SharePoint ay hindi nagbibigay ng mga out-of-the-box na suporta para sa mga haligi ng seguridad.

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" mga tanawin. These are easy enough to set up. Gayunman, due to their "personal" kalikasan, these need to be configured for each user. Use standard security configuration to prevent anyone else from creating a personal view.
  • Gumamit ng view ng data na bahagi ng web at ipatupad ang ilang mga uri ng AJAXy solusyon seguridad pinaggupitan.
  • Roll ang iyong sariling listahan display andar at isama ang seguridad pagbabawas sa antas ng haligi.
  • Baguhin ang anyo ng data entry at gamitin JavaScript sa pagsama ng mga modelo ng seguridad na ipapatupad haligi sa antas ng seguridad pinaggupitan.
  • 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 ang iyong sariling ASP.NET data entry function na ipinapatupad ng haligi antas ng seguridad pinaggupitan.

Wala sa mga pagpipilian ay talagang mahusay na, ngunit mayroong hindi bababa sa isang landas sa sundin kung kailangan mong, kahit na mahirap.

Tandaan: Kung kang pumunta down na ng anuman sa mga path, 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" at talunin ang iyong seguridad scheme.

Kung mayroon kang iba pang mga ideya para sa o mga karanasan sa pag-secure ng mga haligi o tanawin, pakiusap email sa akin o mag-iwan ng komento at kukunin ko na i-update ito sa pag-post bilang naaangkop.

</dulo>

Mag-subscribe sa aking blog.

Technorati Tags:

Quick Tip: BDC ADF Bersyon Numero Sigurado Ang iyong Kaibigan

Kung ikaw ay hand-coding file ADF at paggawa ng maraming code / import / test cycle, use the version number to make your life easier.

Galit kong umamin ito, pero hanggang sa linggong ito, 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".

Halimbawa:

<LobSystem
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog BDCMetadata.xsd" Uri="WebService" Salin="1.2.0.0" Pangalan="xyzzyDocumentReview" xmlns="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">

Baguhin ang bersyon na iyon at muling pag-import at ang umiiral na hanay ng negosyo ay gumagamit ng data sa na-update na bersyon awtomatikong na walang karagdagang configuration na kinakailangan.

</dulo>

Mag-subscribe sa aking blog.

Technorati Tags:

Solusyon: BDC Picker Ipinapakita lamang One Haligi Ng Mga Resulta

Sa aking on-pagpunta pagtatangka sa pagbibigay ng higit pang mga kapaki-pakinabang na lookup gamit ang haligi BDC, 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".

Mong ma-access ang picker sa pamamagitan ng pag-click sa icon na open book ng isang hanay ng data ng negosyo tulad ng ipinapakita:

imahen

The above image shows a business data column called "Master Document Id". That column is connected, sa pamamagitan ng BDC, 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" tungkulin. Users select a "master" dokumento at kapag sila ay i-save ang, isang kaganapan receiver kopya meta data mula sa mga patlang ang reference master.

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

clip_image002

Iyon ay kapaki-pakinabang, 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. Pamagat) ngunit hindi ipapakita ang aktwal na listahan ng mga pamagat na ito natagpuan, lamang DocId kanilang ay tulad ng ipinapakita dito:

clip_image002[1]

(Ang screen shot ay hindi kaya mahusay na ito dahil hindi ko na lang ng paghahanap na nagbabalik ng anumang wastong mga resulta, ngunit maaari mong makita na kung ito ay natagpuan ng ilang mga resulta, Gusto ito lamang ang nagpakita sa DocId ni, Hindi pamagat).

I searched high and low for the answer to this and failed. Ang aking kasamahan, ang mga karapat-dapat sambahin Jonathan Bradshaw, had faced and solved this issue. When I reached out to him for help, siya tulis sa akin sa tamang direksyon.

Configure the picker to show multiple columns via the "ShowInPicker" ari-arian sa ADF:

<Ari-arian Pangalan="ShowInPicker" Uri="System.Boolean">totoo</Ari-arian>

Sa higit pang mga detalye:

  <!-- Pamagat -->
  <TypeDescriptor TypeName="System.String" Pangalan="Pamagat" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Pamagat</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Katangian>
      <Ari-arian Pangalan="DisplayByDefault" Uri="System.Boolean">totoo</Ari-arian>
      <Ari-arian Pangalan="ShowInPicker" Uri="System.Boolean">totoo</Ari-arian>
    </Katangian>
  </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. Sa aking kaso, BDC picker showed DocId by default. Gayunman, once I added "ShowInPicker" sa Pamagat, DocId no longer displayed. I solved that by explicitly setting the ShowInPicker property for Doc ID.

Narito ang resulta ng:

imahen

(I’ll explain the odd-looking "168 – CamlSchema.xsd" construction in a future blog post. In short, ito ay isang concatenated string na nagbibigay-daan para sa isang bahagyang mas mahusay na karanasan ng gumagamit).

Talaga, pagkakaroon ng nakasulat na ito blog entry, I just did a search for "ShowInPicker" at nakitang maraming mga hit, kabilang ang isang ito: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. It explains the meaning of that property along with some other good BDC stuff.

</dulo>

Mag-subscribe sa aking blog!

Technorati Tags:

Mabilis & Madali: Lumikha ng isang Folder at Magtalaga ng isang Uri ng Nilalaman (O, May ang iyong KPIs at Kumain kanila Masyadong)

Upang gumawa sa paligid ng isang KPI problema Ko sinulat ni tungkol dito, 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) ang mga end user ay hindi alam ang anumang mas mahusay at 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, na kung saan ay hindi ang dulo ng mundo.

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. Bilang isang resulta, ito ay isang piraso ng keyk upang panatilihin ang mga parent folder ni 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").Subfolder;
  SPFolder Idinagdag folder = srcFolders.Add(properties.ListItem.ID.ToString());
  SPContentTypeId kpiCT = bago SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["Content Type ID"] = kpiCT;
  addedFolder.Item.Update();

Upang mahanap ang aktwal na Nilalaman Uri ng ID, I-access na uri ng nilalaman sa pamamagitan ng mga setting ng site at kopyahin / paste ito mula sa URL tulad ng ipinapakita:

imahen

</dulo>

Mag-subscribe sa aking blog!

Technorati Tags: ,

Mabilis at madali: Kumuha ng ang SPFolder ng isang SPListItem sa isang receiver Kaganapan

Galit kong umamin ito, 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:

pribado walang bisa UpdateParentFolder(SPItemEventProperties katangian)
{

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


} // UpdateParentFolder

Sa kasong ito, Ako nagtatrabaho sa isang dokumento na library at ang mga katangian ay darating mula isang ItemAdded na kaganapan.

Ang lansihin ay na hindi mo makuha ang SPFolder ng item direkta mula sa item mismo (i.e. properties.ListItem.Folder ay null). Sa halip, pumunta sa nauugnay File ng mga item sa listahan at makakuha ng folder ang File.

</dulo>

Mag-subscribe sa aking blog!

Technorati Tags:

Pa isa pang Kaganapan receiver Debug trick

I’m sure I’m not the first person to come up with this. Gayunman, I haven’t noticed anyone publish a trick like this since I started paying close attention to the community last July. Kaya, Naisip ko na gusto ko itong i-post ang mabilis at madaling tip debug.

Ako ay nagtatrabaho sa isang kaganapan na receiver na sinimulan upang bumuo ng ang error na ito sa 12 kaharian ng mga laywan:

Error sa paglo-load at tumatakbo kaganapan receiver Conchango.xyzzyEventReceiver sa xyzzy, Bersyon = 1.0.0.0, Culture = neutral, PublicKeyToken = blahbalhbalh. Additional information is below. : Object reference hindi nakatakda sa isang halimbawa ng isang bagay.

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.

Sinubukan kong ito solusyon upang makakuha ng aking pdb sa doon may pag-asa na SharePoint ni 12 kaharian ng mga laywan ay magpapakita ng mga stack trace, but no luck. I don’t know if it’s possible and if someone does, mangyaring ipaalam sa akin 🙂

Alam ko posible upang isulat ang iyong sariling mga mensahe log sa 12 kaharian ng mga laywan. Frankly, Nais kong isang bagay ng kaunti mas nakakatakot at mas mabilis na ipapatupad.

Ito ay naganap sa akin na maaari ko ng hindi bababa sa makakuha ng ilang mga pangunahing impormasyon sa pamamagitan ng trace pansing at muling ibinabato generic pagbubukod ganito:

  sumubok {
    UpdateEditionDate(katangian);
  }
  abutin (Kataliwasan at)
  {
    magtapon bago Kataliwasan("Dispatcher, UpdateEditionDate(): Kataliwasan: [" + e.ToString() + "].");
  }

Ito ay nagpakita ng hanggang sa ang 12 kaharian ng mga laywan thusly:

Error sa paglo-load at tumatakbo kaganapan receiver Conchango.xyzzyEventReceiver sa xyzzy, Bersyon = 1.0.0.0, Culture = neutral, PublicKeyToken = blahblahblah. Additional information is below. : Despatsador, UpdateEditionDate(): Kataliwasan: [System.NullReferenceException: Object reference hindi nakatakda sa isang halimbawa ng isang bagay. at Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(SPItemEventProperties katangian) at Conchango.xyzzyManagementEventReceiver.Dispatcher(SPItemEventProperties katangian, String eventDescription)].

Na ibinigay mo sa akin ang lahat ng mga detalye na kailangan ko upang subaybayan ang down na partikular na problema at inaasahan kong gamitin ito ng maraming pasulong.

</dulo>

Mag-subscribe sa aking blog!