lưu trữ hàng tháng: Tháng Tám 2007

MOSS nâng cao tìm kiếm tuỳ chỉnh — Trường hợp quan trọng trong tìm kiếm nâng cao XSLT

Tôi không sửa đổi tìm kiếm nâng cao XSLT thường xuyên, do đó, nó có vẻ như tôi đang leo núi đồi nhỏ mỗi khi.

Bài học mới nhất của tôi là đây: Trường hợp một vấn đề khi tham khảo một cột. Trong tìm kiếm nâng cao của tôi, Tôi có cột định nghĩa như thế này:

<người chủ xmlns:XSi="http://www.w3.org/2001/XMLSchema-instance">
<
Cột>
<
Cột Tên="GafTrainingInvoiceNumber" />
<
Cột Tên="GafTrainingInvoiceLocation" />
<
Cột Tên="WorkId"/>
<
Cột Tên="Đánh giá"/>
<
Cột Tên="Tiêu đề"/>
<
Cột Tên="Tác giả"/>
<
Cột Tên="Kích thước"/>
<
Cột Tên="Đường dẫn"/>
<
Cột Tên="Mô tả"/>
<
Cột Tên="Viết"/>
<
Cột Tên="SiteName"/>
<
Cột Tên="CollapsingStatus"/>
<
Cột Tên="HitHighlightedSummary"/>
<
Cột Tên="HitHighlightedProperties"/>
<
Cột Tên="ContentClass"/>
<
Cột Tên="IsDocument"/>
<
Cột Tên="PictureThumbnailURL"/>
</
Cột>
</
người chủ>

XLST hiển thị hoá đơn số và hóa đơn vị trí đã:

<p>
Đào tạo hoá đơn số: <XSL:giá trị của chọn="GafTrainingInvoiceNumber"/>
<
BR></BR>
Đào tạo hoá đơn vị trí: <XSL:giá trị của chọn="GafTrainingInvoiceLocation"/>
</
p>

Tuy nhiên, những lựa chọn có để tham khảo các tài sản trong tất cả các trường hợp thấp hơn, như trong:

<p>
Đào tạo hoá đơn số: <XSL:giá trị của chọn="gaftraininginvoicenumber"/>
<
BR></BR>
Đào tạo hoá đơn vị trí: <XSL:giá trị của chọn="gaftraininginvoicelocation"/>
</
p>


Cho đến khi tôi sửa chữa mà, kết quả tìm kiếm cho thấy các nhãn (tức là. "Đào tạo hoá đơn số") nhưng không có dữ liệu.

RÊU: Ví dụ chức năng-kiểu tùy chỉnh dữ liệu

Kinh doanh kịch bản:

Toàn doanh nghiệp thực hiện rêu cho công ty sản xuất với 30+ Các trang web và một vài bộ phận chục doanh nghiệp.

Mục tiêu kinh doanh:

Mặc dù một vô số các nhóm kinh doanh (bộ phận, địa điểm, vv), một số dữ liệu nên được duy trì ở mức toàn cầu. Ví dụ:, một danh sách tổng thể uỷ quyền của tất cả các vị trí thực tế của công ty (Ví dụ như. cơ sở sản xuất, vị trí kho, văn phòng bán hàng) nên được duy trì ở một vị trí trung tâm.

Vấn đề kỹ thuật:

Phân loại doanh nghiệp được thực hiện bằng cách sử dụng nhiều trang web bộ sưu tập. Chúng tôi đã có thể thích để tạo danh sách thẩm quyền của vị trí thực tế trong một danh sách WSS tùy chỉnh. Sau đó, Khi chúng tôi cần thiết để có một cột trong một loại nội dung (hoặc một cột mới nhất được gửi vào một danh sách hoặc tài liệu thư viện) mà có công ty địa điểm, chúng tôi sẽ tạo ra một cột bằng cách sử dụng "tra cứu" loại dữ liệu và điểm vào danh sách tổng thể này.

Thật không may, tra cứu datatypes phải truy cập vào một danh sách nguồn "tại địa phương" ý nghĩa của chúng tôi danh sách thẩm quyền không thể khoảng các bộ sưu tập trang web.

Giải pháp kỹ thuật:

Thực hiện một kiểu dữ liệu tuỳ chỉnh mới thực hiện dựa trên SPField và thể hiện như một DropDownList trong giao diện người dùng có ListItems cư töø danh saùch WSS tổng thể.

Chúng tôi tạo ra một bộ sưu tập trang web mới được gọi là "http://localhost/EnterpriseData". Có, chúng tôi tạo ra một danh sách tùy chỉnh tên "Vị trí doanh nghiệp". Danh sách này chỉ sử dụng tiêu chuẩn "tiêu đề" lĩnh vực này để chứa danh sách các địa điểm thực tế của công ty.

Một sau một vài bước rời rạc để tạo ra một loại tùy chỉnh dữ liệu trong WSS. Bọn chúng:

  1. Xác định một lớp đó thừa hưởng từ SPField (một có thể thừa kế từ các lĩnh vực khác nếu cần thiết).

Đây là mã cho rằng:

công cộng lớp học XYZZYCorporateLocationField : SPFieldText
{
công cộng XYZZYCorporateLocationField
(SPFieldCollection lĩnh vực, chuỗi typeName, chuỗi displayName)
: cơ sở(lĩnh vực, typeName, displayName) { }

công cộng XYZZYCorporateLocationField
(SPFieldCollection lĩnh vực, chuỗi displayName)
: cơ sở(lĩnh vực, displayName) { }

công cộng ghi đè BaseFieldControl FieldRenderingControl
{
nhận được
{
BaseFieldControl kiểm soát = mới XYZZYCorporateLocationFieldControl();
kiểm soát. FieldName = Điều này.InternalName;
trở lại kiểm soát;
} //nhận được
} // fieldrenderingcontrol

công cộng ghi đè chuỗi GetValidatedString(đối tượng giá trị)
{
Nếu (Điều này.Yêu cầu || giá trị. ToString().Bằng(Chuỗi.Sản phẩm nào))
{
ném mới SPFieldValidationException ("Không phân vùng.");
}
trở lại cơ sở.GetValidatedString(giá trị);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Xác định một lớp thừa hưởng từ sự kiểm soát cơ sở trường, như trong:

công cộng lớp học XYZZYCorporateLocationFieldControl : BaseFieldControl
{
bảo vệ DropDownList XYZZYCorporateLocationSelector;

bảo vệ ghi đè chuỗi DefaultTemplateName
{
nhận được
{
trở lại "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

công cộng ghi đè đối tượng Giá trị
{
nhận được
{
EnsureChildControls();
trở lại Điều này.XYZZYCorporateLocationSelector.SelectedValue;
} // nhận được
thiết lập
{
EnsureChildControls();
Điều này.XYZZYCorporateLocationSelector.SelectedValue = (chuỗi)Điều này.ItemFieldValue;
} // thiết lập
} // ghi đè lên các đối tượng giá trị

bảo vệ ghi đè void CreateChildControls()
{

Nếu (Điều này.Lĩnh vực == null || Điều này.ControlMode == SPControlMode.Hiển thị)
trở lại;

cơ sở.CreateChildControls();

Điều này.XYZZYCorporateLocationSelector =
(DropDownList)TemplateContainer. FindControl("XYZZYCorporateLocationSelector");

Nếu (Điều này.XYZZYCorporateLocationSelector == null)
ném mới Ngoại lệ("LỖI: Không thể nạp. ASCX tập tin!");

Nếu (!Điều này.IsPostBack trang.)
{

bằng cách sử dụng (SPSite Trang web = mới SPSite("http://localhost/enterprisedata"))
{
bằng cách sử dụng (SPWeb web = trang web. OpenWeb())
{

Splist.Update() currentList = trang web. Danh sách["Công ty địa điểm"];

foreach (SPItem XYZZYCorporateLocation currentList.Items)
{
Nếu (XYZZYCorporateLocation["Tiêu đề"] == null) «««;

chuỗi theTitle;
theTitle = XYZZYCorporateLocation["Tiêu đề"].ToString();

Điều này.XYZZYCorporateLocationSelector.Items.Add
(mới ListItem(theTitle, theTitle));

} // foreach

} // bằng cách sử dụng spweb web = site.openweb()
} // bằng cách sử dụng trang web spsite = mới spsite("http://localhost/enterprisedata")

} // Nếu không một postback

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Đoạn mã trên về cơ bản thực hiện logic cho populating DropDownList với các giá trị từ danh sách tùy chỉnh WSS nằm ở http://localhost/enterprisedata và tên là "công ty tỉnh".

Tôi xác định cả hai lớp trong một file duy nhất .cs, biên dịch nó và đặt nó vào gấc (mạnh mẽ yêu cầu, Tất nhiên).

  1. Thực hiện một mẫu kiểm soát (.ascx) như được hiển thị:

<%@ Kiểm soát Ngôn ngữ= "C#" Kế thừa="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Phiên bản = 12.0.0.0, văn hóa = trung lập,PublicKeyToken = 71e9bce111e9429c" compilationMode= "Luôn luôn" %>
<%
@ Đăng ký Tagprefix= "wssawc" Không gian tên="Microsoft.SharePoint.WebControls" Lắp ráp="Microsoft.SharePoint, Phiên bản = 12.0.0.0, Văn hóa = trung tính, PublicKeyToken = 71e9bce111e9429c" %> <%@ Đăng ký Tagprefix= "SharePoint" Không gian tên="Microsoft.SharePoint.WebControls" Lắp ráp="Microsoft.SharePoint, Phiên bản = 12.0.0.0, Văn hóa = trung tính, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID= "XYZZYCorporateLocationFieldControl" runat= "máy chủ">
<Tiêu bản>
<ASP:DropDownList ID= "XYZZYCorporateLocationSelector" runat= "máy chủ" />
</Tiêu bản>
</
SharePoint:RenderingTemplate>

Ở trên được lưu vào c:\chương trình filesmicrosoft filescommon sharedweb máy chủ extensions12controltemplates.

  1. Cuối cùng, chúng tôi tạo ra một tập tin XML để lưu vào các... 12XML thư mục. Đây là CAML xác định kiểu dữ liệu tùy chỉnh của chúng tôi và ví dụ của tôi, trông như thế này:

<?XML Phiên bản="1.0" mã hóa="UTF-8" ?>
<
FieldTypes>
<
FieldType>
<
Lĩnh vực Tên="TypeName">CorporateLocations</Lĩnh vực>
<
Lĩnh vực Tên="ParentType">Văn bản</Lĩnh vực>
<
Lĩnh vực Tên="TypeDisplayName">Công ty địa điểm</Lĩnh vực>
<
Lĩnh vực Tên="TypeShortDescription">Tất cả các địa điểm XYZZY công ty bao gồm sản xuất hoặc các hóa chất.</Lĩnh vực>
<
Lĩnh vực Tên="UserCreatable">ĐÚNG</Lĩnh vực>
<
Lĩnh vực Tên="ShowInListCreate">ĐÚNG</Lĩnh vực>
<
Lĩnh vực Tên="ShowInDocumentLibraryCreate">ĐÚNG</Lĩnh vực>
<
Lĩnh vực Tên="ShowInSurveyCreate">ĐÚNG</Lĩnh vực>
<
Lĩnh vực Tên="ShowInColumnTemplateCreate">ĐÚNG</Lĩnh vực>
<
Lĩnh vực Tên="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Phiên bản = 1.0.0.0, Văn hóa = trung tính, PublicKeyToken = b0b19e85410990c4</Lĩnh vực>
<
RenderPattern Tên="DisplayPattern">
<
Chuyển đổi>
<
Expr>
<
Cột />
</
Expr>

<Trường hợp Giá trị=""/>

<Mặc định>
<
HTML>
<![CDATA[
<khoảng phong cách = "màu:Đỏ"><b>]]>
</
HTML>

<
Cột SubColumnNumber="0" HTMLEncode="ĐÚNG"/>

<HTML><![CDATA[</b></khoảng>]]></HTML>

</
Mặc định>
</
Chuyển đổi>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
Tệp tin XML này cho biết thêm kiểu dữ liệu tuỳ chỉnh để WSS "thư viện" và phù hợp với nó lên chống lại gấc đã lắp ráp.

Sau khi di chuyển tất cả các bit vào vị trí, iisreset trên máy chủ và nó nên tất cả bắt đầu làm việc độc đáo.

WSS: Các kỹ thuật để tạo CAML lĩnh vực định nghĩa.

Thêm thể loại: CAML

Ở đây là một bài tuyệt vời bởi một người tên là "craig" trên một kỹ thuật cho việc tìm kiếm CAML định nghĩa cho lĩnh vực nội dung loại dựa vào lại các định nghĩa thực sự sống từ một trang web.

Gửi bài của ông nói rằng tất cả. Trong khuôn khổ:

  1. Tạo ra một loại nội dung.
  2. Kết hợp nó với một danh sách.
  3. Mở ra danh sách với SharePoint Designer.
  4. Xuất chuyển sang một gói phần mềm web cá nhân"".
  5. Đổi tên để .cab một.
  6. Giải nén manifest.
  7. Tìm kiếm của bạn loại nội dung và liên kết CAML.

WSS: Tóm tắt các bước để kích hoạt hữu ích tính năng/yếu tố/vv. Intellisense trong VS 2005

Thêm thể loại: Visual Studio 2005

Để kích hoạt hữu ích intellisense cho tính năng, yếu tố, vv trong visual studio 2005:

  1. Truy cập vào một máy chủ WSS.
  2. Điều hướng đến "c:\chương trình filesmicrosoft filescommon sharedweb máy chủ extensions12TEMPLATEXML"
  3. Mở một cửa sổ explorer trỏ đến: "C:\Chương trình FilesMicrosoft Visual Studio 8XmlSchemas"
  4. Sao chép các tập tin từ máy chủ WSS VS của bạn 2005 lược đồ thư mục:
    1. WSS.xsd
    2. CamlQuery.xsd
    3. CamlView.xsd
    4. CoreDefintions.xsd
  5. Khởi động lại VS 2005
  6. Thêm một tập tin XML mới vào một dự án.
  7. Nhấp vào trong cơ thể của các tập tin XML.
  8. Trong cửa sổ thuộc tính, nhấp vào "lược đồ" và chọn "wss.xsd" từ những lựa chọn. (Nó không phải là cần thiết để chọn khác xsd kể từ khi họ được tham chiếu từ wss.xsd).

Intellisense bây giờ được kích hoạt cho rằng tài liệu XML.

Xem Ở đây cho thêm thông tin về chủ đề này và để được hướng dẫn về làm thế nào để tự động kết hợp WSS intellisense với bất kỳ tập tin XML.

WSS thi 70-541, Dịch vụ Microsoft Windows SharePoint 3.0 – Phát triển ứng dụng

Tôi đã và thông qua các bài kiểm tra nêu sáng nay. Tôi tìm thấy các kỳ thi để được khó khăn và công bằng.

Đó là một sự thiếu hụt tương đối của thông tin về kỳ thi này trên web. Tôi không chắc chắn tại sao.

Tôi rõ ràng sẽ không nhận được vào bất kỳ chi tiết về các kỳ thi tôi đã, nhưng tôi nghĩ rằng tôi có thể an toàn nói sau đây:

  1. Tin tưởng này liên kết: http://www.microsoft.com/learning/exams/70-541.mspx.

    Nó sẽ liệt kê những gì bạn cần biết để vượt qua kỳ thi này và cách của nó, IMO, rất chính xác.

  2. Liên kết cũng khuyến cáo Trong Microsoft Windows SharePoint dịch vụ 3.0 bởi Ted Pattison & Daniel Larson. Cuốn sách này bao gồm gần như tất cả các đối tượng mà các bài kiểm tra địa chỉ. Tôi tìm thấy nó sẽ là tuyệt vời trong và của chính nó ngoài đơn giản thi prep. Nó cung cấp các ví dụ tuyệt vời và thực sự đã cho tôi suy nghĩ về một số điều mới và thú vị để thử. Nếu bạn muốn bỏ qua một vài bit trong cuốn sách, chỉ cần tham khảo qua các cuốn sách TOC với các mục trong liên kết từ ở trên.
  3. Không có gì đập bàn tay-trên kinh nghiệm thực tế. Nếu bạn có thời gian và lãi suất, làm theo cùng với các ví dụ trong cuốn sách và sau đó thử nghiệm với họ. Bạn sẽ có một thời gian dễ dàng hơn về các kỳ thi cũng như thực sự tìm hiểu lập trình ứng dụng WSS.

</kết thúc>Đăng ký vào blog của tôi!

RÊU / Hệ phục vụ các hình thức InfoPath (InfoPath 2007) hiệu suất danh sách thả-xuống

Thêm thể loại: InfoPath

Tóm tắt: Một InfoPath 2007 hình thức được bố trí đến một máy chủ MOSS cung cấp một danh sách thả xuống của các nhà cung cấp gắn với một danh sách tùy chỉnh MOSS. Khi lựa chọn một nhà cung cấp, quy tắc chỉ định giá trị trường cho một số lĩnh vực văn bản ví dụ như đại diện bán hàng tên, địa chỉ, thành phố, nhà nước, Zip và điện thoại. Hiệu suất là khủng khiếp. Chúng tôi nhận thấy rằng hiệu suất bị nặng hơn (trong một thời trang phi tuyến tính) cho mỗi lĩnh vực bổ sung chúng tôi Cập Nhật theo cách này. Tức là, Nếu chúng ta chỉ cần Cập Nhật tên đại diện bán hàng, phải mất [x] số lượng thời gian. Nếu chúng tôi Cập Nhật đại diện bán hàng, address1, address2, thành phố, nhà nước, Số Zip, phải mất 10 thời gian dài hơn.

Giải pháp: Viết một dịch vụ web (mã mẫu có thể được tìm thấy Ở đây) đó là thông qua trong tên của một nhà cung cấp và nó sẽ trả lại các chi tiết nhà cung cấp. Sau đó, chỉ định các lĩnh vực theo cách này. Mặc dù điều này có vẻ quá chậm, đã có không có sự khác biệt discernable tại hiệu suất trong khi chúng tôi chỉ định 1 các lĩnh vực so với 8 lĩnh vực. Là một tiền thưởng thêm, người dùng nhận được một mát "liên hệ với hệ phục vụ" Cylon có hiệu lực trong khi họ chờ đợi cho các hình thức để gọi và tiêu thụ các kết quả dịch vụ.

RÊU: Xảy ra ngoại lệ. (Ngoại lệ từ HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

CẬP NHẬT: Chúng tôi không bao giờ xác định nguyên nhân gốc của vấn đề này và nó bề mặt không bao giờ một lần nữa.

Chúng tôi nhận thấy trong thời gian thực hiện của một trang web phát triển đó đột nhiên, hai người dùng không thể truy cập vào một bộ sưu tập trang web. Các tài khoản có thể xác thực để các trang web chính, nhưng khi cố gắng để truy cập vào một bộ sưu tập trang web cụ thể, họ chỉ nhận được một màn hình trống. Không có lỗi hiển thị, chỉ là một trang trống màu trắng.

Chúng tôi đăng nhập như một quản trị viên bộ sưu tập trang web và cố gắng thêm một trong những người dùng là một trang web quản trị và thời gian này, sau khi nhấn "OK", chúng tôi nhận được tin nhắn này:

Xảy ra ngoại lệ. (Ngoại lệ từ HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

Chúng tôi đã dành một số thời gian nghiên cứu này và không may, đã không đưa ra bất cứ điều gì hữu ích. Đã có một số thông điệp trong Nhật ký chuẩn đoán, nhưng nó đã được khó khăn để chính xác tương quan họ với vấn đề này.

Cuối cùng, chúng tôi xóa bộ sưu tập trang web và tái tạo nó và rằng đã giải quyết nó.

Nếu tôi tìm ra những gì gây ra điều này trong tương lai, Tôi sẽ cập nhật các bài đăng này.