Месечни архиви: Февруари 2008

Мала Соопштение до јавноста: Windows Live поставки за безбедност и Контактирање простор Сопствениците

I receive a handful of messages from individuals via the built-in "send a message" функција Мајкрософт обезбедува со 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, Верзија = 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"]

Кога ќе misspell или користат на погрешен случај кога референцирање на полето, 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 – Поради Датум

-или-

А – Од материјал Тип
Б – Сите Документи
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" пати да се појавуваат на дното од листата.

</крајот>

Да се ​​претплатите на мојот блог.

Недела Смешни: “Кога бев мало дете”

Како родител, некаде по должината на линијата го открив "Кога бев мало дете" 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 и Мос:

  • SharePoint не обезбедува надвор од-the-box поддршка за обезбедување пати.
  • SharePoint не обезбедува надвор од-the-box поддршка за безбедносни колони.

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. Сепак, 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 безбедност кастри решение.
  • Се тркалаат свој листа дисплеј функционалност и инкорпорирање безбедност кастрење на колона ниво.
  • Измени на внес на податоци форми и користете го вклучите 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.
  • Се тркалаат свој 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 Тагови:

Брзо Совет: ЦРБ 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">

Промена таа верзија и ре-увоз и постоечките деловни податоци колона користи ажурирана верзија автоматски без дополнителни конфигурација бара.

</крајот>

Да се ​​претплатите на мојот блог.

Technorati Тагови:

Решение: ЦРБ берач покажува само една колона на резултатите

Во мојот он-ќе обиди за обезбедување на повеќе корисни пребарување колона користење ЦРБ, 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, преку ЦРБ, 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" имотот во ADF:

<Сопственост Името="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. На кратко, тоа е concatenated стринг кој овозможува малку подобро корисничко искуство).

Се разбира, ја напишав овој блог запис, 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 Тагови:

Брзи & Лесно: Креирај фолдер и доделите типот на содржина (Или, Ваш KPIs и ќе ги јадат Премногу)

Со цел да работат околу проблемот 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").Потпапки;
  SPFolder addedFolder = 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

Во овој случај, Јас работам со еден документ библиотека и особини се доаѓа од ItemAdded настан.

Трикот е во тоа што не можете да добиете на SPFolder на содржина директно од точка сама по себе (i.e. properties.ListItem.Folder е null). Наместо, одат на поврзани датотеката на елемент во листата и да добијат папка на датотеката.

</крајот>

Да се ​​претплатите на мојот блог!

Technorati Тагови:

Уште еден настан ресивер грешки Трик

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, Верзија = 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.

Се обидов ова решение да се добие ми ППБ таму со надеж дека 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 кошница thusly:

Грешка при вчитувањето и трчање настан приемник Conchango.xyzzyEventReceiver во xyzzy, Верзија = 1.0.0.0, Култура = неутрален, PublicKeyToken = blahblahblah. Additional information is below. : Диспечер, UpdateEditionDate(): Исклучок: [System.NullReferenceException: Референца на објект не е поставена на пример на објект. at Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(SPItemEventProperties својства) at Conchango.xyzzyManagementEventReceiver.Dispatcher(SPItemEventProperties својства, Стринг eventDescription)].

Кој ми даде сите детали ми требаше да ги пратите во воспоставувањето дека посебен проблем и јас очекувам да го користат многу оди напред.

</крајот>

Да се ​​претплатите на мојот блог!