Danh mục lưu trữ: SharePoint

Làm thế nào để khắc phục sự cố lỗi SharePoint bí ẩn.

Tổng quan:

Gỡ lỗi là khó khăn khi phát triển các chức năng tùy chỉnh cho Windows SharePoint Services 3.0 (WSS) hoặc Microsoft Office SharePoint Server (RÊU). Thủ phạm chính là rằng SharePoint thường bề mặt rất ít thông tin chẩn đoán trên trình duyệt web khi một lỗi xảy ra. Blog entry này mô tả làm thế nào để xác định vị trí bổ sung tạo ra hệ thống thông tin chẩn đoán có thể thường cung cấp đó thêm chút về chi tiết là một nhu cầu để xác định nguyên nhân gốc rễ. Điều này sau đó có thể dẫn đến việc giải quyết vấn đề.

Tôi đã sử dụng kỹ thuật này với thành công lớn để giải quyết bí ẩn nếu không lỗi.

Phương pháp tiếp cận:

SharePoint lưu rất nhiều thông tin vào một Nhật ký chẩn đoán trong một tệp nhật ký tại các 12 tổ ong.

"12 tổ ong" là thường nằm ở "C:\Chương trình FilesCommon FilesMicrosoft SharedWeb máy chủ Extensions12 ". (Tôi không chắc chắn nếu nó có thể cho các 12 hive sống bất cứ nơi nào khác, Thực tế).

Mục đích là để xác định vị trí tệp sổ ghi hiện tại, lực lượng lỗi và sau đó nhanh chóng mở các tập tin đăng nhập. Các tập tin đăng nhập được đặc trưng bởi:

  • Các số tiền phong phú của thông tin. SharePoint tạo ra một lượng rất lớn của thông tin chẩn đoán và viết nó vào tập tin đăng nhập đó rất nhanh chóng. Bạn cần phải được nhanh chóng với các ngón tay để nắm bắt nó.
  • Đa dạng. SharePoint không viết thư cho một tập tin đăng nhập duy nhất nhưng thay vào đó tạo ra nhiều đăng nhập tập tin theo thứ tự.
  • Sao chép và dán độc đáo vào MS Excel.

Phương pháp yêu thích của tôi:

  1. Mở một cửa sổ Explorer trỏ đến các 12 hivelogs.
  2. Loại giao diện Hiển thị bằng cách sửa đổi ngày (gần đây nhất đầu tiên).
  3. Đánh dấu các tập tin đăng nhập mới nhất.
  4. Trong một cửa sổ trình duyệt web, lực lượng lỗi xảy ra.
  5. Một cách nhanh chóng mở tệp sổ ghi hiện thời và sao chép nội dung của nó sang MS Excel.
  6. Nhảy đến cuối và phân tích các mục có liên quan.

Ghi chú khác:

Theo mặc định, Nhật ký chẩn đoán nằm trong các 12 thư mục hiveLOGS.

MS Best thực tiễn (theo Mike T. của Microsoft) trạng thái đăng nhập tập tin nên được lưu vào một ổ cứng riêng biệt. Một thực hiện điều này thông qua Trung tâm quản trị. Quản trị hệ thống của bạn có thể đã làm điều này, trong trường hợp đó bạn rõ ràng sẽ cần phải tìm thấy tệp nhật ký có thay vì mặc định 12 vị trí tổ ong).

Cụm từ này địa chỉ các vấn đề chẳng hạn như:

  • Quy trình làm việc SharePoint không khởi động do lỗi nội bộ.
  • (nhiều hơn để được thêm vào theo thời gian)
  • Mục nhập này đã được hữu ích chẩn đoán lỗi quy trình làm việc (Ví dụ như. "Quy trình làm việc không khởi động do lỗi nội bộ").

RÊU: Các giới thiệu có hiệu quả để tổ chức một

(cụm từ này qua đăng giữa http://paulgalvin.spaces.live.com/blog/http://blogs.conchango.com)

Các bài đăng trên trang web này là của riêng tôi và không nhất thiết phải đại diện cho vị trí của Conchango, chiến lược hoặc ý kiến.

Tổng quan:

Mục nhập này mô tả một số thông tin cơ bản trên một lớn (3,000 người dùng) Microsoft Office SharePoint Server (RÊU) buổi giới thiệu và những gì chúng tôi đã làm để có được dự án cán trong một cách mà các khách hàng là hạnh phúc và vững chắc xuống một con đường mà kết thúc với đầy đủ thông qua bộ tính năng MOSS. Bài viết của mục, chúng tôi là khoảng 50% hoàn chỉnh với giai đoạn đầu tiên của dự án. Khi những điều tiến bộ, Tôi sẽ cập nhật các mục nhập này và/hoặc viết mục mới.

Trong trường hợp cụ thể này, công ty đã có cài đặt SharePoint cổng thông tin máy chủ 2003. Nhóm CNTT cài đặt sản phẩm trong một loại "Hãy xem nếu bất cứ ai quan tâm" thời trang. Nó nhanh chóng được chấp nhận bởi người dùng doanh nghiệp nhiều và trở nên khá phổ biến trong các doanh nghiệp lớn. Như bạn có thể tưởng tượng, Điều này đã không chiến lược buổi giới thiệu tốt nhất (mà khách hàng dễ dàng thừa nhận) và khi MOSS tới hiện trường, khách hàng giải quyết để "làm nó ngay" và đã thuê chúng tôi để giúp họ.

Một trong những câu hỏi trung tâm phải đối mặt với chúng tôi khi chúng tôi bắt đầu thực hiện dự án này là: Làm thế nào để chúng tôi giới thiệu MOSS để khách hàng này? Cho rằng các khách hàng đã có kinh nghiệm với SharePoint, chúng tôi tự hỏi — chúng tôi có phải làm "vi sai" đào tạo hoặc làm chúng tôi bắt đầu từ mặt đất lên? Sau khi làm việc với người sử dụng quan trọng, chúng tôi xác định rằng điều trị này như là một dự án lĩnh vực màu xanh lá cây làm cho ý nghĩa hơn.

Quyết định đó đã đưa ra một điểm khởi đầu nhưng vẫn còn chúng tôi với các yêu cầu chính của figuring ra một chiến lược tốt cho cán MOSS cho doanh nghiệp. MOSS là một động vật lớn … nó bao gồm quản lý nội dung, quản lý tài liệu, Tìm kiếm, an ninh, đối tượng nhắm mục tiêu, quản lý dự án, "bốn mươi tuyệt vời" mẫu, quy trình làm việc, doanh nghiệp dữ liệu kết nối, vv. Cặp vợ chồng này với thực tế là nó là một tổ chức lớn mà có thể thực sự làm cho việc sử dụng hầu như tất cả MOSS chính tính năng và bạn đã vật của một dự án lớn với một doanh nghiệp tiếp cận và nhiều điều tốt đẹp xảy ra.

Chúng tôi đang phải đối mặt với vấn đề này thời gian và thời gian nữa … MOSS có một doanh nghiệp tiếp cận với doanh nghiệp bộ tính năng, thậm chí hơi phức tạp khách hàng chưa một thời gian khó khăn về tinh thần hấp thụ các tính năng, để cho một mình kết hợp một phần đáng của họ vào các thói quen hàng ngày của họ.

Tôi không có một giải pháp ma thuật cho vấn đề. Tôi thay vì giải quyết chỉ các bước đầu tiên chúng tôi đã thực hiện với các khách hàng để dẫn họ xuống đường dẫn đến nhận con nuôi thành công lâu dài.

Phạm vi:

Càng nhiều càng tốt, tôi muốn đội để thủ công một kế hoạch dự án bao gồm các sự kiện quan trọng như "PoepleSoft tích hợp via BDC hoàn tất", "Mới khoa Cross sản phẩm khởi động quy trình làm việc đầy đủ" và "Quản lý điều hành KPI của chấp nhận", Tôi đã phải giải quyết cho một cái gì đó ít. Điều này là không phải để nói rằng ít"" là xấu. Thực tế, càng ít"" chúng tôi quyết định cho các buổi giới thiệu ban đầu đã là dặm phía trước của nơi mà họ đã trước khi chúng tôi bắt đầu. Trong trường hợp của chúng tôi, càng ít"" biến thành:

  • Quản lý tài liệu đơn giản bằng cách sử dụng thư viện tài liệu, Phiên bản kiểm soát và nội dung loại.
  • Hiệu quả tìm kiếm dựa trên loại nội dung và tùy chỉnh tìm kiếm nâng cao (Via được quản lý tài sản, XSLT tạo ra kết quả khá, vv).

Ngoài các tính năng trên toàn doanh nghiệp (có nghĩa là họ đã được cuộn ra để tất cả các phòng ban và người dùng), chúng tôi thêm các singleton trong phạm vi mini-dự án:

  • Bằng chứng của khái niệm hội nhập BDC.
  • Quá trình quy trình làm việc nhiều bước và nhiều chi nhánh tạo thông qua SPD.
  • Phức tạp InfoPath hình thức.
  • KPI bề mặt cho một số quá trình kinh doanh (có lẽ HR tài năng mua lại trong trường hợp của chúng tôi, mặc dù rằng có thể thay đổi).

Phạm vi ở đây là không 100% chính xác nhưng đại diện của cách tiếp cận của chúng tôi và đủ cho mục đích của tôi ở đây, mà là để giải thích những gì tôi cho là một "hiệu quả" giới thiệu rêu sẽ thiết lập các khách hàng vững chắc xuống con đường vàng để đầy đủ MOSS nhận con nuôi.

Tôi sẽ không viết nhiều hơn nữa về singleton trong mục này. Tôi muốn chỉ ra rằng đây là một phần của chiến lược của over-arching. Ý tưởng là để thực hiện các tài liệu quản lý và tìm kiếm tính năng cốt lõi để tất cả người dùng chưa cung cấp cao chức năng, cao có thể nhìn thấy và đại diện cao ví dụ về các tính năng MOSS cốt lõi mà chỉ đơn giản là vượt ra ngoài khả năng hấp thụ ở giai đoạn này của hầu hết người dùng. Tuy nhiên, họ sẽ "ra có" và một trong những hy vọng rằng các đơn vị kinh doanh sẽ biết hoặc tìm hiểu về họ và muốn các tính năng đó cho mình, dẫn đến nhận con nuôi lớn hơn. Những câu chuyện thành công singleton cũng phục vụ để cung cấp đội ngũ bán hàng của chúng tôi "đạn dược" cho thành công chiến thắng thứ hai, dự án thứ ba và n-giai đoạn.

Những gì chúng tôi đã giới thiệu và tại sao?

Có giải quyết trên tài liệu quản lý và tìm kiếm như là một đường cơ sở toàn doanh nghiệp yêu cầu, chúng tôi cần thiết để bắt đầu thu thập thông tin chi tiết. Như một vấn đề thực tế, Điều này xoay quanh sự hiểu biết tài liệu của họ và rằng cuối cùng lập bản đồ để tìm hiểu về loại nội dung.

Tôi đã tìm thấy nó rất khó để giải thích loại nội dung mà không có hình ảnh trợ lý. Nhiều kỹ thuật dân gian có thể đi bộ ra khỏi một cuộc thảo luận về loại nội dung khi của CT được mô tả trong điều khoản cơ sở dữ liệu. "A CT là tương tự như một bảng cơ sở dữ liệu", đô thị này có cột và cột được định nghĩa trong điều khoản của các loại dữ liệu, nhưng CT dữ liệu loại bao gồm nhiều hơn số nguyên đơn giản/ngày, nhưng cũng "lựa chọn" và "tra cứu" và như thế." Chúng tôi có thể nói chuyện về "mở rộng" loại nội dung, giống như một trong những có thể thừa kế chức năng từ một lớp cơ sở trong hướng đối tượng ngôn ngữ. Tuy nhiên điều này rõ ràng là không phải là hữu ích cho sở giao thông vận tải admin người đã có không có nền kỹ thuật. Tức là, gần như tất cả những vấn đề trong một buổi giới thiệu MOSS.

Bằng cách sử dụng một bảng trắng là iffy. Tôi đã trình bày ý tưởng của một loại nội dung và rút ra rực rỡ (hoặc vì vậy họ có vẻ) hình ảnh của loại nội dung và những gì họ làm cho bạn trong điều khoản của tìm kiếm và làm thế nào họ có thể được mở rộng, vv. Cuối cùng, nó cảm thấy như một số bóng đèn đã bật, nhưng những hình ảnh bảng trắng kết quả là một mess.

Điều này dẫn chúng ta tới nơi hạ cánh hiện tại và hiệu quả vì vậy xa nhất của chúng tôi: một chỗ thử MOSS trang web cấu hình để hiển thị các tính năng.

Bằng cách sử dụng trang web chỗ thử, chúng tôi chứng minh:

  • Loại nội dung:
    • Tạo một CT với nhiều loại dữ liệu (văn bản, ngày tháng, sự lựa chọn, boolean, tra cứu, vv).
    • Mở rộng một CT bằng cách tạo ra một CT mới dựa trên một phụ huynh.
    • Tìm kiếm tài liệu bằng cách sử dụng siêu dữ liệu CT.
  • Thư viện tài liệu:
    • Kết hợp một CT duy nhất với một thư viện.
    • Những gì sẽ xảy ra khi chúng tôi tải lên một tài liệu vào thư viện đó?
    • Kết hợp nhiều CT với một thư viện tài liệu.
    • Những gì sẽ xảy ra khi chúng tôi tải lên một tài liệu vào thư viện đó?
    • Lọc và phân loại thông qua tiêu đề cột trong một lib doc.
    • Số lần xem thư viện tài liệu:
      • Phân loại
      • Nhóm
      • "Nhanh chóng nhập cảnh" (xem bảng dữ liệu)
      • "Dữ liệu untagged" (để hỗ trợ di chuyển để MOSS từ các nguồn nội dung khác; Thêm chi tiết về điều này dưới đây).

Trang web Sandbox:

Chúng tôi thiết kế trang web của chúng tôi chỗ thử là một tính năng thường xuyên trong môi trường phát triển để được sử dụng cho mục đích huấn luyện dài sau khi chúng tôi hoàn thành dự án và bao gồm một số hiện vật như được mô tả:

Loại nội dung:

Chúng tôi xác định loại nội dung sau đây: Hoá đơn, Mua hàng, Dịch vụ hóa đơn.

Chúng tôi lựa chọn đặt hàng hoá đơn và mua bởi vì họ là nhiều hay ít phổ dưới
đứng thực thể. Tất cả mọi người trong kinh doanh hiểu được rằng hóa đơn là một nhu cầu cho thanh toán cho một khách hàng cho một số lượng phát hành trên một số ngày tháng để được thanh toán theo một số điều khoản thanh toán. Điều này dẫn đến một định nghĩa tự nhiên của một CT mà chúng tôi gọi là "đào tạo hóa đơn" (để phân biệt nó từ bất kỳ hình thức nào khác của hóa đơn). Mua hàng tương tự như vậy một cách dễ dàng được xác định. Chúng tôi cũng tạo ra một "đào tạo Dịch vụ hóa đơn" bằng cách tạo ra một CT mới dựa trên các hóa đơn của đào tạo"" CT và thêm chỉ là một cột, "Dịch vụ trả lại".

Với ở trên, chúng tôi bây giờ có thể chứng minh một số tính năng chính của CT của mà không nhận được bogged xuống cố gắng để giải thích một khái niệm trừu tượng đầu tiên; Tất cả mọi người đã hiểu được những gì chúng tôi có nghĩa là bởi "hóa đơn" và "mua hàng" và thay vào đó có thể tập trung vào cơ học của CT chính nó.

Tuỳ chỉnh danh sách:

CT với cột loại "tra cứu" trỏ đến một thư viện tùy chỉnh danh sách hoặc tài liệu. Chúng tôi sử dụng rộng rãi và cho sandbox, chúng tôi tạo ra một hỗ trợ danh sách tùy chỉnh có chứa khách. Chúng tôi chọn khách bởi vì nó là một khái niệm dễ dàng để hiểu và dễ dàng để chứng minh. Hoá đơn CT có một cột, "khách hàng" đó định nghĩa của loại "tra cứu" mà chỉ tại danh sách này.

Chúng tôi tạo ra một danh sách tùy chỉnh tương tự để quản lý "nhà cung cấp" cho "mua hàng" CT.

Thư viện tài liệu:

Chúng tôi tạo ra hai tài liệu thư viện: "Hóa đơn" và "Hỗn hợp tài liệu".

Chúng ta cấu hình thư viện tài liệu hoá đơn để quản lý các tài liệu duy nhất của CT loại "Hóa đơn".

Chúng tôi đặt cấu hình các "tài liệu hỗn hợp" Các thư viện để quản lý tất cả của ba CT.

Tạo ra một số quan điểm rằng Hiển thị phân loại, lọc, dữ liệu tờ và nhóm.

Tìm kiếm:

Chúng tôi xác định hai thuộc tính mới được quản lý và ánh xạ họ để số hóa đơn và khách hàng.

Chúng tôi tạo ra một trang web tìm kiếm tuỳ chỉnh nâng cao mới và sửa đổi nó để cho phép người dùng tìm kiếm cho "hóa đơn" bằng cách sử dụng những tài sản được ánh xạ hai.

Sửa đổi XSLT để số hóa đơn và khách hàng, Khi trình bày, xuất hiện trong một bảng HTML trong một màu sắc tươi sáng. Mục tiêu ở đây là để chứng minh rằng định dạng như vậy có thể.

Đưa nó tất cả cùng nhau:

Chúng tôi sắp xếp cho các người dùng quan trọng để tham gia vào một bản demo.

Chúng tôi làm theo này kịch bản đơn giản:

  1. Mô tả ý nghĩa và mục đích của một CT, sử dụng các hoá đơn và lệnh mua hàng như là ví dụ.
  2. Hiển thị định nghĩa CT hóa đơn trong khi đồng thời đảm bảo họ rằng họ không cần phải sử dụng những màn hình chính mình, chỉ cần chọn lên các khái niệm.
  3. Đi đến thư viện tài liệu hoá đơn.
  4. Tải lên một tài liệu.
  5. Chứng minh rằng khách hàng thả xuống thực sự có nguồn gốc từ một danh sách tùy chỉnh.
  6. Thêm một khách hàng mới vào danh sách khách hàng và sau đó cập nhật dữ liệu meta hóa đơn mới được tải lên với khách hàng mới được tạo ra.
  7. Chuyển sang các "tài liệu hỗn hợp" thư viện và tải lên một tài liệu. Giải thích làm thế nào hệ thống sẽ nhắc cho một loại tài liệu.
  8. Đi lại cho thư viện tài liệu hoá đơn và hiển thị như thế nào nhấp vào cột Tên thay đổi thứ tự sắp xếp.
  9. Chứng minh cấp cột lọc.
  10. Hiển thị các quan điểm khác nhau mà chứng minh phân loại đa cấp, lọc và nhóm.
  11. Hiển thị dữ liệu bảng xem.
  12. Giải thích mục đích của một "văn bản untagged" Xem.
  13. Chuyển sang tìm kiếm tuỳ chỉnh nâng cao.
  14. Bởi bây giờ, Các tài liệu được tải lên gần đây nên đã được thu thập thông tin và lập chỉ mục, để thực hiện một tìm kiếm chứng tỏ khả năng để xác định vị trí đó hóa đơn thông qua tài sản được ánh xạ.
  15. Chúng tôi chứng minh sự khác biệt giữa tìm kiếm thông qua thuộc tính được ánh xạ vs. chỉ là một tìm kiếm văn bản.

Tại thời điểm này, chúng tôi nhiều hơn hoặc ít hơn được thực hiện với các bản demo. Nó dường như mất khoảng 30 để 45 phút, tùy thuộc vào bao nhiêu câu hỏi người yêu cầu.

Chúng ta sau đó gửi họ quay lại bàn làm việc của họ với "bài tập về nhà". Điều này bao gồm một đơn giản excel bảng tính, nơi chúng tôi yêu cầu họ xác định cho chúng tôi những gì họ nghĩ rằng họ cần trong điều kiện của CT, cả hai đều ở mức cao (mục đích chỉ tên và kinh doanh) cũng như các cột và loại dữ liệu họ sẽ lưu trữ trong cột. Chúng tôi không yêu cầu họ để xác định loại dữ liệu cột trong điều khoản MOSS, nhưng điều kiện kinh doanh.

Tóm lại:

Chúng tôi đã tạo ra một môi trường chỗ thử chúng tôi có thể sử dụng để chứng minh một số tính năng MOSS cốt lõi mà kháng cáo được toàn doanh nghiệp.

Chúng tôi đã làm người mẫu thực thể kinh doanh dễ dàng hiểu và phổ biến, do đó người dùng có thể tập trung vào RÊU và không nhận được bogged xuống trên các thực thể / Ví dụ bản thân.

Người dùng doanh nghiệp đi bộ từ đề tài buổi với "bài tập về nhà" trong hình thức tài liệu excel mà họ đang có thẩm quyền để điền vào và sử dụng cho việc thiết kế riêng của họ loại nội dung đầu tiên cắt.

Cuối cùng, Khi chúng tôi thực hiện trình diễn theo thời gian, thành viên nhóm khách hàng của mình trở nên nhiều khả năng để thực hiện chuyển tiếp, do các bản demo của mình và thường miễn phí phần còn lại của chúng tôi lên để làm việc về các vấn đề phức tạp hơn, chẳng hạn như phân loại toàn cầu, quy trình công việc phức tạp, BDC và như thế.

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.

RÊU: Cập nhật danh sách tùy chỉnh

Có rất nhiều ví dụ điển hình của Cập nhật danh sách tùy chỉnh qua SDK. Đây là thêm một.

Vấn đề kinh doanh: InfoPath hình thức đã được thiết kế cho phép người dùng để nhập trực tuyến mua nhiều. Trưng dụng PO số nên là truyền thống tự dựa trên giá trị số nguyên và tính toán tự động.

Giải pháp kinh doanh: Tạo một danh sách MOSS tùy chỉnh có chứa hai cột: "ControlField" và "ControlValue". Giá trị cột có chứa số trưng dụng mua hàng tiếp theo. Lưu ý rằng chung "kiểm soát" quy ước đặt tên cung cấp cho các lĩnh vực kiểm soát tương lai có thể được sử dụng khi cần thiết.

Giải pháp kỹ thuật: Tạo ra một dịch vụ web truy cập bởi các khách hàng InfoPath. Dịch vụ web trả về trở lại trưng dụng số tiếp theo của mua và Cập Nhật giá trị của danh sách.

Bài học:

  • Khi thêm dịch vụ web này như là một nguồn dữ liệu mẫu InfoPath, Tôi tìm thấy nó cần thiết để chuyển nó sang một udc và lưu nó vào một thư viện kết nối dữ liệu.
  • Tôi cũng tìm thấy nó cần thiết để cho phép tên miền chéo kịch bản thông qua Trung tâm dịch vụ quản lý // quản lý ứng dụng // hình thức cấu hình máy chủ.
  • Lần đầu tiên các hình thức đã cố gắng để truy cập vào các dịch vụ web, phải mất một lúc và thỉnh thoảng, nó sẽ thời gian ra. Tôi fiddled với cài đặt trong hình thức cấu hình máy chủ để mở rộng các thiết lập thời gian chờ và điều đó dường như để giúp.

:

bằng cách sử dụng Hệ thống;
bằng cách sử dụng System.Web;
bằng cách sử dụng System.Web.Services;
bằng cách sử dụng System.Web.Services.Protocols;
bằng cách sử dụng Microsoft.SharePoint;
bằng cách sử dụng System.Configuration;

[WebService(Không gian tên = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
công cộng lớp học PoService : System.Web.Services.WebService
{
công cộng PoService () {

//Bỏ ghi chú dòng sau nếu sử dụng thiết kế thành phần
//InitializeComponent();
}

/// <tóm tắt>
/// Có được số PO tiếp theo từ danh sách kiểm soát số sharepoint po.
/// Tăng số PO trên danh sách đó.
/// </tóm tắt>
/// <trả về></trả về>
[WebMethod]
công cộng chuỗi GetNextPoNumber()
{
chuỗi SpPoControlSiteName; // Tên của trang web thực tế của MOSS lưu trữ danh sách điều khiển PO.
chuỗi SpPoControlListName; // Tên danh sách MOSS thực tế có Po control.

SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();

chuỗi nextPoReqNumber = "xyzzy";

bằng cách sử dụng (SPSite Trang web = mới SPSite(SpPoControlSiteName))
{
bằng cách sử dụng (SPWeb web = trang web. OpenWeb())
{

Splist.Update() currentList = trang web. Danh sách[SpPoControlListName];

foreach (SPItem controlItem currentList.Items)
{

Nếu (((chuỗi)controlItem["ControlField"]).Bằng("NextPoNumber"))
{
nextPoReqNumber = (chuỗi)controlItem["ControlValue"];

int int_nextPoReqNumber;
int_nextPoReqNumber = Chuyển đổi.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}

} // Vị trí, đọc và cập nhật số PO trong danh sách.


} // 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/mizuho")

trở lại nextPoReqNumber;

}
}