სწრაფი და მარტივი: დებულება საიტის გამოყენება SharePoint ობიექტური მოდელის C #

I tried searching for a little snippet code that would show how I can create a new SPWeb in a site collection. I didn’t find it as quickly or easily as I expected so I thought I’d slap together a little entry on the subject.

ეს კოდი ქმნის ახალ Wiki საიტი:

 SPSite siteCollection;

    siteCollection = ახალი SPSite("http://conchang-o9l8qi");

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy Title",
        "xyzzy description", 1033, SPWebTemplate.WebTemplateWIKI, ყალბი, ყალბი);

My initial searches failed because I was looking for phrases like "provision a web site using sharepoint object model" and the like.

თუ თქვენ ძებნის for "Webs.Add()", თქვენ მოვძებნოთ რაოდენობის ძალიან სასარგებლო blog entries, MSDN articles and SDK documentation that go into depth on this subject. I definitely recommend საიტი.

</ბოლო>

გამოწერა ჩემი დღიური.

პროგრამები Tags:

ინტეგრაცია SharePoint Designer Workflows ვებ სერვისი

მე სათამაშო გარშემო ერთად საბაჟო მოქმედებები SharePoint Designer გარკვეული დროის (აქ ზოგიერთი დეტალური პერსონალი, თუ, რომ ინტერესების თქვენ).

ჩემი მიმდინარე პროექტის, we need to do some fairly heavy lifting and we want to use declarative SPD workflow to manage the associated business process.

დიდხანს სიუჟეტი მოკლე, this is entirely possible. I extended my Codeplex project to invoke a "helper service" and now we can invoke a web service directly from an SPD workflow.

აი ხელმოწერის:

 საჯარო სიმებიანი Dispatcher(
        ინტრუქცია WebID, // გაიარა runtime გარემოს
        ინტრუქცია SiteID, // გაიარა runtime გარემოს
        სიმებიანი ListID, // გაიარა RTE (არ ვიცი რატომ ეს სიმებიანი, არ guid)
        int ListItemID, // გაიარა RTE.
        სიმებიანი XmlMessage) // გაიარა შესახებ, როგორც დეკლარირებული SPD.

ეს ბერკეტი იმისა, რომ ჩვენ შეგვიძლია მივიღოთ ერთი მნიშვნელოვანი workflow ინფორმაცია, ისევე როგორც საიტი, სიაში ID, და ა.შ.. This is well documented in several places for those of you interested in creating your own custom actions. The idea is to extract the XML string as provided by the user to dispatch an appropriate procedure. Fun stuff!

სამწუხაროდ, ეს აშკარად ერთი გზა ბილეთი ქვემოთ "Loosey Goosey" ანტი ნიმუში მიწის, but it’s better than hitting a brick wall 🙂

არის თუ არა ანტი ნიმუში თუ ეს მიუხედავად იმისა, რომ თქვენ იცით, ანტი ნიმუში?

I hope to wrap this inside Codeplex in the near future. If you’re interested in me doing so, მომეცი poke (ელ ან დატოვონ კომენტარი) and I’ll be that more enthusiastic about doing it 🙂

</ბოლო>

გამოწერა ჩემი დღიური.

პროგრამები Tags: ,

კვირა სასაცილო: “მაინტერესებს, თუ თქვენი პაროლი …”

I recently bought lunch for my brother (როგორც ყოველთვის) and we ended up talking about funny things that we did at our respective colleges. At my alma mater, Lafayette College, the academic support IT department had a very inclusive way about it. We were given a LOT of rope and I took advantage of that at times.

Two my favorite memories relate to my good friend, Gabe. He had made the terrible mistake of telling people his freshman year that "I’m a freshman, but I have Sophomore standing" due to the various advanced placement classes he had taken, და ა.შ.. Many of us were similarly situated but we didn’t talk about it so much. His senior year, when we introduced him to people, we’d say "This is Gabe. He’s a Senior, but he has Sophomore standing".

The college had some Sun workstation/servers running X-Window. They had gigantic monitors and the engineers used them for CAD and other boring engineer stuff. We CS people used them to learn programming and, რა თქმა უნდა, to play games.

We didn’t like the computer-helpless engineers to much so one of our favorite things to do would be to telnet to the box they were on and run X-eye on them. This would pop up a pair of eyes that followed the mouse around on the screen. You could pop up even more and have literally a dozen or more of the X-eye applications running. ცდილობენ არ სიცილი ხმამაღლა, როდესაც უიღბლო ინჟინერი დახურვას ცდილობს X-eye შემდეგ X-eye და muttering მისი სუნთქვა შესახებ 🙂

We also played X-trek on those boxes. ამის, you had to download the source, get various dependencies wherever you could find them and build it. I wasn’t a sophisticated C programmer, but I could read header files. I was looking through these and found directives like "#DEFINE MAX_TORPEDO_DISTANCE 10". I played around with that increase range and power for phases and torpedoes, re-built it and then destroyed Gabe the next time we played.

Gabe was also a huge fan of a TV show called Blake’s 7. I had never seen it, but that didn’t prevent me from insisting that Dr. Who is the superior show. არგუმენტები დაიჭერს გათბობის დროს 🙂

One day, it occurred to me that I could probably guess his UNIX password. I sat down next to him one day and announced in a loud tone, "I’m going to guess your password right now, Gabe." "Yeah, უფლება" was his answer. I then logged in, entered his user id, turned to face him, typed and said out loud, "I wonder if it’s B-L-A-K-E-7" ? Touch typing has never paid off as handsomely as it did that day.

მომავალ კვირას (or soon): More computer room antics from college.

Do you have any to share? Leave a comment or email me and I’ll publish them here.

</ბოლო>

გამოწერა ჩემი დღიური.

პროგრამები Tags:

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.

</ბოლო>

მარტივი ახსნა: “ღირებულება არ მიეკუთვნება მოსალოდნელ დიაპაზონი.”

განახლების: An anonymous poster left a great comment about internal names. Be sure to read it.

როდესაც ვმუშაობთ ღონისძიება მიმღები და სხვა კოდი, რომელიც ეხება ამ SharePoint სია ნივთები მეშვეობით ობიექტის მოდელი, მე ხშირად უშვებენ შეცდომებს, რომ წარმოქმნის ეს შეცდომა at runtime:

შეცდომა და გაშვებული ღონისძიება მიმღები Conchango.xyzzyEventReceiver in 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", 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. მაგალითად, this is wrong:

properties.ListItem["due Date"]

</ბოლო>

გამოწერა ჩემი დღიური.

პროგრამები Tags:

საბოლოო მომხმარებლის სწრაფი რჩევა: დალაგება ნახვების დოკუმენტი ბიბლიოთეკა, სია, და ა.შ..

ჩვენ შეგვიძლია, უნდა და არ შევქმნათ მრავალი ხედვა 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 (და მე არ ვარ დარწმუნებული, რომ ეს შეიძლება), 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, , როგორც in:

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

-ან-

A – 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_[აღწერა]

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

</ბოლო>

გამოწერა ჩემი დღიური.

პროგრამები Tags: ,

კვირა სასაცილო: “როცა პატარა ბიჭი იყო”

As a parent, somewhere along the line I discovered the "When I was a little boy" trick.

My son, probably four or five at the time, was playing a balloon and like most little boys that play with balloons, he popped it. He was very upset. The world had come to an end. I said to him, "when I was little boy, I had a balloon and it popped and eventually, 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, Prince, had died in a car accident. ამჯერად, his response was, "Now I feel bad about two things!" I shied away from using the "when I was a little boy" technique for consolation after that.

Before the dead dog incident, თუმცა, 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", და ა.შ..

This too was pretty successful for a while, 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, that was STUPID!".

</ბოლო>

გამოწერა ჩემი დღიური.

პროგრამები Tags:

ნახვა და Columns on სიები და დოკუმენტი ბიბლიოთეკა არ შეიძლება დაცული

განახლების (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 არ იძლევა out-of-the-box მხარდაჭერა უზრუნველყოფის ჩვენებები.
  • SharePoint არ იძლევა out-of-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" ჩვენებები. 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 საკუთარი ჩვენების ფუნქციონირება და ითვალისწინებდეს უსაფრთხოების ჩასწორება ზე სვეტი დონეზე.
  • შეცვლა მონაცემთა შეყვანის ფორმები და გამოყენება 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 თქვენი 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" და დაამარცხებს თქვენი უსაფრთხოების სქემა.

თუ თქვენ გაქვთ სხვა იდეები ან გამოცდილებას უზრუნველყოფის სვეტები და შეხედულების, გთხოვთ მომაწოდეთ ან დატოვონ კომენტარი და მე განაახლოს ეს განთავსებას, როგორც შესაბამისი.

</ბოლო>

გამოწერა ჩემი დღიური.

პროგრამები Tags:

სწრაფი რჩევა: 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.

</ბოლო>

გამოწერა ჩემი დღიური.

პროგრამები Tags:

Solution: BDC Picker გადაცემები მხოლოდ ერთი სვეტი შედეგები

In my on-going attempts at providing a more useful lookup column using 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".

You access the picker by clicking on the open book icon of a business data column as shown:

იმიჯი

The above image shows a business data column called "Master Document Id". That column is connected, via 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" document and when they save, an event receiver copies meta data fields from the referenced master.

სტანდარტულად, the BDC picker looks like this when I search for a document whose ID = "38":

clip_image002

That’s helpful, 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. სათაური) but won’t show the actual list of titles it found, just their DocId’s as shown here:

clip_image002[1]

(The screen shot isn’t so great because I didn’t pick a search that returns any valid results, but you can see that if it had found some results, it would only have shown DocId’s, not titles).

I searched high and low for the answer to this and failed. ჩემმა კოლეგამ, the venerable Jonathan Bradshaw, had faced and solved this issue. When I reached out to him for help, he pointed me in the right direction.

Configure the picker to show multiple columns via the "ShowInPicker" property in the ADF:

<ქონების სახელი="ShowInPicker" გაცნობის="System.Boolean">ნამდვილი</ქონების>

In more detail:

  <!-- სათაური -->
  <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" to Title, DocId no longer displayed. I solved that by explicitly setting the ShowInPicker property for Doc ID.

Here is the result:

იმიჯი

(I’ll explain the odd-looking "168 – CamlSchema.xsd" construction in a future blog post. In short, it’s a concatenated string that allows for a slightly better user experience).

რა თქმა უნდა, having written this blog entry, I just did a search for "ShowInPicker" and found numerous hits, including this one: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. It explains the meaning of that property along with some other good BDC stuff.

</ბოლო>

გამოწერა ჩემი დღიური!

პროგრამები Tags: