Như câu hỏi đã nói - có cách nào để xác định trang nào đang bao gồm phần web của tôi không?Sharepoint: làm thế nào tôi có thể tìm thấy tất cả các trang lưu trữ một phần web cụ thể?
Trả lời
Nếu bạn đang tìm kiếm mã, tôi có thứ gì đó cho bạn. Nếu bạn muốn tìm tất cả các phần web Query Nội dung thì bạn sẽ gọi mã của tôi như thế này:
FindWebPart("http://server.com/", "Microsoft.SharePoint.Publishing.WebControls.ContentByQueryWebPart");
Dưới đây là các mã:
public static void FindWebPart(string siteCollectionUrl, string webPartName)
{
using (SPSite siteCollection = new SPSite(siteCollectionUrl))
{
using (SPWeb rootSite = siteCollection.OpenWeb())
{
FindWebPartHelper(rootSite, webPartName);
}
}
}
public static void FindWebPartHelper(SPWeb site, string webPartName)
{
// Search for web part in Pages document library
SPList pagesList = null;
try
{
pagesList = site.Lists["Pages"];
}
catch (ArgumentException)
{
// List not found
}
if (null != pagesList)
{
SPListItemCollection pages = pagesList.Items;
foreach (SPListItem page in pages)
{
SPFile file = page.File;
using (SPLimitedWebPartManager mgr = file.GetLimitedWebPartManager(PersonalizationScope.Shared))
{
try
{
SPLimitedWebPartCollection webparts = mgr.WebParts;
foreach (System.Web.UI.WebControls.WebParts.WebPart wp in webparts)
{
// Here perform the webpart check
// For instance you could identify the web part by
// its class name
if (webPartName == wp.GetType().ToString())
{
// Found a match! Now do something...
Console.WriteLine("Found web part!");
}
}
}
finally
{
// Needs to be disposed
mgr.Web.Dispose();
}
}
}
}
// Check sub sites
SPWebCollection subSites = site.Webs;
foreach (SPWeb subSite in subSites)
{
try
{
FindWebPartHelper(subSite, webPartName);
}
finally
{
// Don't forget to dispose!
subSite.Dispose();
}
}
}
Ofcourse, bạn có thể thay đổi chút để mã này. Hiện tại nó có so sánh chuỗi, nhưng thật dễ dàng để thực hiện nó theo cách được đánh máy hơn. Chúc vui vẻ!
Bằng cách thay thế, nếu bạn muốn kiểm tra các trang phần web bao gồm các trang mặc định trên các trang web cộng tác, bạn có thể sử dụng đoạn mã sau đó sử dụng tài sản tập tin của đối tượng SPWeb:
private static void FindWebPart(string siteUrl, string webPartName)
{
using (var site = new SPSite(siteUrl))
{
foreach (SPWeb web in site.AllWebs)
{
foreach (var file in web.Files.Cast<SPFile>().Where(file => file.Name.EndsWith("aspx")))
{
FindWebPartOnPage(webPartName, file);
}
var pagesTemplateType = (SPListTemplateType)Enum.Parse(typeof(SPListTemplateType), "850");
foreach (var documentLibrary in web.Lists.Cast<SPList>().Where(list => list.BaseTemplate == pagesTemplateType || (list.BaseTemplate == SPListTemplateType.DocumentLibrary && list.Title.Contains("Pages"))))
{
foreach (var file in documentLibrary.Items.Cast<SPListItem>().Where(item => item.File.Name.EndsWith("aspx")).Select(item => item.File))
{
FindWebPartOnPage(webPartName, file);
}
}
web.Dispose();
}
}
}
private static void FindWebPartOnPage(string webPartName, SPFile file)
{
using (var webPartManager = file.GetLimitedWebPartManager(PersonalizationScope.Shared))
{
if (webPartManager.WebParts.Cast<WebPart>().Any(webPart => webPart.GetType().Name == webPartName))
{
Console.WriteLine(file.ServerRelativeUrl);
}
webPartManager.Web.Dispose();
}
}
Lưu ý: thư viện Pages được tạo bởi tính năng Publishing không có giá trị BaseTemplate của SPListTemplateType.DocumentLibrary; thay vào đó nó được đại diện bởi một giá trị "ẩn" của 850.
này được gọi một cách tương tự như câu trả lời LeonZandman, tuy nhiên chỉ có tên lớp được sử dụng để cung cấp cho một trận đấu:
FindWebPart("http://yoursite.com/", "MyWebPart");
- 1. Làm thế nào tôi có thể hiển thị tất cả các biến lưu trữ cục bộ lưu trữ?
- 2. MySQL: làm thế nào tôi có thể thấy tất cả các ràng buộc trên một bảng?
- 3. Làm thế nào để tìm tất cả các liên kết/trang trên một trang web
- 4. Làm thế nào để xác định tất cả các thủ tục lưu trữ tham chiếu đến một bảng cụ thể
- 5. Làm thế nào tôi có thể tìm thấy tất cả các tên miền giải quyết cho một địa chỉ IP?
- 6. Tìm tất cả các lớp có thuộc tính cụ thể
- 7. Làm thế nào tôi có thể tìm thấy tất cả các đơn vị trong ứng dụng Delphi của tôi?
- 8. Làm thế nào tôi có thể tìm thấy tất cả các hình chữ nhật ràng buộc các vùng trong một bitmap?
- 9. Tìm tệp trong tất cả các thư mục có thể?
- 10. Làm thế nào tôi có thể lưu trữ cấu hình trang web trong MongoDB cho một ứng dụng NodeJS Express?
- 11. Làm thế nào tôi có thể tìm thấy tất cả các kết hợp có thể có của một danh sách các danh sách (bằng Python)?
- 12. Lỗi SharePoint: "Không thể nhập Phần Web"
- 13. jQuery - làm thế nào tôi có thể tìm thấy nếu một id có một chuỗi cụ thể?
- 14. Làm thế nào tôi có thể quản lý tất cả các cảnh báo trong TFS
- 15. Cách xem tất cả các tuyển tập trang trong một nội dung cụ thể DB
- 16. Làm thế nào tôi có thể tìm thấy tất cả các giá trị có thể cho một tùy chọn trong Mathematica?
- 17. Làm cách nào để tìm tất cả các phần tử có thể có trong danh sách?
- 18. Lưu trữ trang web Django của tôi
- 19. tôi có thể tìm thấy tất cả Android đâu xây dựng trong chủ đề
- 20. Liên kết đến một phần cụ thể của trang web
- 21. Trong mercurial làm thế nào tôi có thể tìm thấy changesets có chứa một chuỗi?
- 22. Làm thế nào tôi có thể lập trình tạo ảnh chụp màn hình của một trang Web cụ thể?
- 23. Làm thế nào tôi có thể tải về các ví dụ từ trang web bootstrap twitter
- 24. Làm cách nào để có được tất cả các phần tử của một thẻ HTML cụ thể trong javascript?
- 25. Làm thế nào tôi có thể lưu trữ ảnh chụp regex trong một mảng trong Perl?
- 26. Làm thế nào tôi có thể clearInterval() cho tất cả setInterval()?
- 27. Làm thế nào tôi có thể nhận được tất cả các tham chiếu với Reflection + C#
- 28. jQuery - làm cách nào tôi có thể tìm thấy phần tử có id nhất định?
- 29. Trong AngularJS, làm thế nào để bạn tìm thấy tất cả các phạm vi trên một trang?
- 30. Có thể tìm tất cả các tên miền phụ DNS cho một tên miền cụ thể không?
vô địch, cảm ơn cho giúp đỡ – nailitdown
Rất vui được giúp đỡ :-) – LeonZandman
Nhân tiện, bạn có nên đánh dấu câu trả lời của mình là câu trả lời hay không bằng cách nhấp vào dấu kiểm? – LeonZandman