Штомесячны архіў: Лютага 2008

Малой Сацыяльная рэклама: Windows Live Параметры бяспекі і зварот у службу касмічнай уладальнікаў

I receive a handful of messages from individuals via the built-in "send a message" Microsoft падае функцыю з Live Spaces (які таксама знаходзіцца мой блог) кожны месяц.

Прыкладна трэць часу, those users have secured their live spaces account such that I cannot reply. This is some kind of anti-spam feature I assume.

</канец>

Простае тлумачэнне: “Значэнне не трапляе ў чаканы дыяпазон.”

АБНАЎЛЕННЕ: An anonymous poster left a great comment about internal names. Be sure to read it.

Пры працы з падзеяй прымачоў і іншы код, які спасылаецца SharePoint элементы спісу праз аб'ектную мадэль, Я часта робяць памылкі, якія генеруюць гэтую памылку падчас выканання:

Памылка загрузкі і запуску Conchango.xyzzyEventReceiver прымача падзей у XYZZY, Version = 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"]

</канец>

Падпісацца на мой блог.

Technorati Тэгі:

Канчатковы карыстальнік Хуткі Падказка: Сартаваць праглядаў ў бібліятэцы дакументаў, Спіс, і г.д..

Мы можам, павінны і сапраўды ствараюць мноства меркаванняў у спісах SharePoint (бібліятэках дакументаў, прыстасаваныя спісы, і г.д.). 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 (і я не ўпэўнены, што гэта можа), Але так далёка да тэхнічнага ваш тыповы для канчатковых карыстальнікаў.

Калі вы хочаце кантраляваць парадак, у якім пералічаныя даступныя SharePoint праглядаў, проста дадайце лічбу ці літару ў імені прадстаўлення, як у:

1 – Па матэрыяле тыпу
2 – Усе дакументы
3 – Тэрмін аплаты

-або-

A – Па матэрыяле тыпу
B – Усе дакументы
C – Тэрмін аплаты

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

Z_KPI_[апісанне]

That causes my "KPI" Праглядаў з'яўляцца ў ніжняй частцы спісу.

</канец>

Падпісацца на мой блог.

Нядзеля Смешныя: “Калі я быў маленькім хлопчыкам”

Як бацька, somewhere along the line I discovered the "When I was a little boy" trick.

Мой сын, магчыма, чатырох або пяці ў той час, гуляў паветраны шар і, як і большасць маленькіх хлопчыкаў, якія гуляюць з паветранымі шарамі, he popped it. He was very upset. The world had come to an end. I said to him, "when I was little boy, У мяне быў паветраны шар, і ён выскачыў і ў канчатковым выніку, 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, Прынц, had died in a car accident. На гэты раз, яго адказ быў, "Now I feel bad about two things!" I shied away from using the "when I was a little boy" тэхніка для суцяшэння пасля гэтага.

Перад інцыдэнтам мёртвых сабак, аднак, 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", і г.д..

Гэта таксама была даволі паспяховай на некаторы час, but he started to increasingly rebel against the tyranny of my childhood. One event, у прыватнасці, 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, Гэта было па-дурному!".

</канец>

Падпісацца на мой блог.

Technorati Тэгі:

Праглядаў і слупкоў ў спісах і бібліятэках дакументаў не можа быць забяспечана

АБНАЎЛЕННЕ (02/29/08): Гэты новы CodePlex праект ўяўляецца распрацоўка спосабу абароны кожнага слупка: http://www.codeplex.com/SPListDisplaySetting. If you have any experience working with it, калі ласка, пакіньце каментар.

Форум плакаты часта задаюць пытанне, як гэта: "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?"

Яны таксама часта пытаюцца, звязаны з гэтым пытанне: "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 і MOSS:

  • SharePoint не забяспечвае па-за убудаваную падтрымку для забеспячэння прагляду.
  • SharePoint не забяспечвае па-за убудаваную падтрымку слупкі бяспекі.

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" Праглядаў. These are easy enough to set up. Аднак, due to their "personal" прырода, these need to be configured for each user. Use standard security configuration to prevent anyone else from creating a personal view.
  • Выкарыстоўвайце вэб-частка прадстаўлення дадзеных і ўсталёўваць нейкую AJAXy ролях бяспекі рашэння.
  • Roll Your Own Функцыянальнасць Адлюстраванне спісу і ўключыць фільтрацыю па ролях бяспекі на ўзроўні слупка.
  • Змена формы ўводу дадзеных і выкарыстоўваць JavaScript ў спалучэнні з мадэллю бяспекі для рэалізацыі на ўзроўні слупкоў па ролях бяспекі.
  • 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 Your Own ASP.NET ўводу дадзеных, якая рэалізуе функцыю узроўні слупкоў па ролях бяспекі.

Ні адзін з гэтых варыянтаў не такія ўжо вялікія, але ёсць па меншай меры шлях, каб прытрымлівацца, калі вам трэба, нават калі гэта цяжка.

УВАГА: Калі спусціцца аднаму з гэтых шляхоў, 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" і перамагчы вашых схемы бяспекі.

Калі ў вас ёсць іншыя ідэі для вопыту ці з забеспячэннем слупкоў або уяўленняў, калі ласка напішыце мне або пакіньце каментар, і я буду абнаўляць аб'яву па меры неабходнасці.

</канец>

Падпісацца на мой блог.

Technorati Тэгі:

Quick Tip: BDC Лікі ADF Версія ваш сябар

Калі вы ручнога кадавання ADF файлаў і рабіць шмат кода / імпарт / цыклаў выпрабаванняў, use the version number to make your life easier.

Я ненавіджу прызнавацца ў гэтым, але ніколі да гэтага тыдня, 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".

Прыклад:

<LobSystem
XMLNS:xsi="HTTP://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="HTTP://schemas.microsoft.com/office/2006/03/BusinessDataCatalog BDCMetadata.xsd" Тып="WebService" Версія="1.2.0.0" Імя="xyzzyDocumentReview" XMLNS="HTTP://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">

Change that version and re-import and the existing business data column uses the updated version automatically with no additional configuration required.

</канец>

Падпісацца на мой блог.

Technorati Тэгі:

Рашэнне: BDC Picker паказаная толькі адна калонка вынікаў

У сваёй бягучай накіраваны на забеспячэнне больш карысныя пошуку калонкі, выкарыстоўваючы 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".

Вы атрымліваеце доступ да выбару, націснуўшы на абразок Адкрыць кнігу калонцы бізнэс-дадзеных, як паказана:

малюнак

The above image shows a business data column called "Master Document Id". That column is connected, праз 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" функцыя. Users select a "master" дакумент і калі яны эканомяць, прыёмнік падзей копіі метададзеных поля з спасылаюцца майстры.

Па змаўчанні, the BDC picker looks like this when I search for a document whose ID = "38":

clip_image002

Гэта карысна, 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. Назва) але не пакажа фактычную спіс назваў ён знайшоў, проста DocId іх, як паказана тут:

clip_image002[1]

(На здымку экрана не так вялікая, таму што я не выбіраў пошуку, якая вяртае ўсе сапраўдныя вынікі, але вы можаце бачыць, што, калі ён выявіў некаторыя вынікі, гэта толькі паказалі DocId аўтара, Ня назвы).

I searched high and low for the answer to this and failed. Мой калега, Шаноўны Джонатан Брэдшоў, had faced and solved this issue. When I reached out to him for help, Ён паказаў мне ў правільным кірунку.

Configure the picker to show multiple columns via the "ShowInPicker" уласнасці ў АПД:

<Уласнасць Імя="ShowInPicker" Тып="System.Boolean">праўда</Уласнасць>

Больш падрабязна:

  <!-- Назва -->
  <TypeDescriptor TypeName="System.String" Імя="Назва" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Назва</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Ўласцівасці>
      <Уласнасць Імя="DisplayByDefault" Тып="System.Boolean">праўда</Уласнасць>
      <Уласнасць Імя="ShowInPicker" Тып="System.Boolean">праўда</Уласнасць>
    </Ўласцівасці>
  </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. У маім выпадку, BDC picker showed DocId by default. Аднак, once I added "ShowInPicker" Назва ў, DocId no longer displayed. I solved that by explicitly setting the ShowInPicker property for Doc ID.

Вось вынік:

малюнак

(I’ll explain the odd-looking "168 – CamlSchema.xsd" construction in a future blog post. In short, гэта аб'яднаную радок, якая дазваляе трохі лепшы карыстацкі досвед).

Вядома, напісаўшы гэты допіс з блогу, I just did a search for "ShowInPicker" і знайшлі шматлікія хіты, уключаючы гэты: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. It explains the meaning of that property along with some other good BDC stuff.

</канец>

Падпісацца на мой блог!

Technorati Тэгі:

Хутка & Лёгка: Стварэнне тэчкі і прызначыць тыпу змесціва (Ці, Мець сваё КПЭ і з'есці іх занадта)

Для таго, каб абыйсці праблемы 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, якi не з'яўляецца канцом святла.

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. 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("Дакументы").SubFolders;
  SPFolder дабаўленая папка = srcFolders.Add(properties.ListItem.ID.ToString());
  SPContentTypeId kpiCT = новы SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["Content Type ID"] = kpiCT;
  addedFolder.Item.Update();

Каб знайсці фактычнага ідэнтыфікатара тыпу кантэнту, Я атрымаў доступ, што тып кантэнту праз сайт налады і капіяваць / ўставіць яго з URL, як паказана:

малюнак

</канец>

Падпісацца на мой блог!

Technorati Тэгі: ,

Хутка і лёгка: Атрымаць 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 Approval Status"] = "Good news, ўсё!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

У гэтым выпадку, 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). Замест, go to the list item’s associated File and get the File’s folder.

</канец>

Падпісацца на мой блог!

Technorati Тэгі:

Яшчэ адзін адладкі прымача падзей 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. Так, Я думаў, што я адпраўлю яго гэты хуткі і просты адладкі наканечнікам.

Я працую над падзеяй прыёмнік, які пачаў генераваць гэтую памылку ў 12 вулей:

Памылка загрузкі і запуску Conchango.xyzzyEventReceiver прымача падзей у XYZZY, Version = 1.0.0.0, Культура = нейтральнай, PublicKeyToken = blahbalhbalh. Additional information is below. : Спасылка на аб'ект не паказвае на асобнік аб'екта.

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 вулей пакажа трасіроўку стэка, but no luck. I don’t know if it’s possible and if someone does, калі ласка, дайце мне ведаць, 🙂

Я ведаю, што гэта магчыма напісаць свой уласны часопіс паведамленняў 12 вулей. Frankly, Я хацеў нешта крыху менш страшным і хутчэй рэалізаваць.

Мне прыйшло ў галаву, што я магу па крайняй меры атрымаць некаторую базавую інфармацыю следу, ловячы і зноў кідалі агульных выключэнняў, як гэта:

  старацца {
    UpdateEditionDate(ўласцівасці);
  }
  злавіць (Выключэнне і)
  {
    кідаць новы Выключэнне("Dispatcher, UpdateEditionDate(): Выключэнне: [" + e.ToString() + "].");
  }

Гэта выявілася ў 12 вулей канстанты выглядае так:

Памылка загрузкі і запуску Conchango.xyzzyEventReceiver прымача падзей у XYZZY, Version = 1.0.0.0, Культура = нейтральнай, PublicKeyToken = blahblahblah. Additional information is below. : Дыспетчар, UpdateEditionDate(): Выключэнне: [System.NullReferenceException: Спасылка на аб'ект не паказвае на асобнік аб'екта. at Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(SPItemEventProperties ўласцівасці) at Conchango.xyzzyManagementEventReceiver.Dispatcher(SPItemEventProperties ўласцівасці, Струнны EventDescription)].

Гэта дало мне ўсё падрабязна мне трэба было адшукаць гэтай канкрэтнай праблемы, і я чакаю, каб выкарыстоўваць яго шмат у будучыні.

</канец>

Падпісацца на мой блог!