我在C#中創建了一個SharePoint Web部件,該部件使用UpdatePanel來實現一些AJAX魔術。一切工作正常,但我想知道如何佈局我的控件可視化(不使用SharePoint設計器)。我只有兩個下拉列表,一些標籤,一個按鈕和一個文本框。我在重寫的CreateChildControls中創建它們。謝謝!SharePoint AJAX C#Web部件 - UpdatePanel控件的可視佈局
回答
有幾種方法可以將它們佈置出來。您可以添加一個Table對象並添加行,單元格等,並將您的控件添加到單元格中。
或者,您可以重寫RenderContents方法並直接將HTML輸出到作爲參數傳入的寫入。如果你使用這種方法(使用Table對象的工作可能更少並且效率更高),那麼應該使用StringBuilder來構建HTML,然後將結果輸出到writer。這種方法應該會讓你獲得一些性能。
不幸的是,這種方法沒有可視化的WYSIWIG編輯器。
不幸的是,沒有以編程方式創建的Web部件的可視化設計器。
您可以使用用戶控件和來自codeplex的SmartPart Web部件來獲得.ascx用戶控件的可視化設計器的優勢。
在你的控件周圍添加一個容器面板並給它一個類。將面板添加到UpdatePanel的容器中。將所有其他控件添加到新面板的控件中。
你現在可以使用css來做你的樣式,使用容器面板的CssClass作爲參考。
代碼:
protected override CreateChildControls()
{
// .. creation of updatepanel, say upd1
Panel container = new Panel{CssClass = "webpartContainer"};
upd1.ContentTemplateContainer.Controls.Add(container);
container.Controls.Add(dropdown1); // etc. etc.
}
的CSS:
.webpartContainer
{
/* if needed add some style here also */
}
.webpartContainer select
{
/* add style */
}
.webpartContainer .specificClass
{
/* give controls a class of their own in CreateChildControls
if controls of the same type need different styling
(i.e. you have more than 1 select that need to look different) */
}
非常感謝您的回答。我真的很喜歡這個解決方案的優雅和它避免表格的事實(我的背景是比開發更多的網頁設計,所以表格= ick),但在這種情況下,我想避免額外的面板。不過,我確實喜歡這個,因爲我總體上更喜歡它作爲解決方案;我只是覺得在這種特殊情況下,另一種方式對我更好。 – 2009-12-21 18:54:06
很高興看到開發人員可以在CSS中看到C的部分值:-D。不幸的是,使用1個容器作爲開始元素來基於樣式,從那裏開始級聯/指定樣式,這在開發人員中並不是一種廣泛使用的做法。上帝我厭惡內聯樣式屬性.... :-D。 – Colin 2009-12-21 19:09:39
這些做法不太廣泛,這太糟糕了。我認爲問題的根源在於開發者/設計師的裂痕。你不會發現許多介意內聯風格的開發人員,而設計人員通常沒有足夠深入的後端理解來正確地解決這些問題。就像我說的那樣,我喜歡這個解決方案,而且我一定會與它合作,以便將來可以將它整合,特別是當我不使用SharePoint時。再次感謝! – 2009-12-22 13:07:01
您可以使用ASCX文件在Web部件..只是從你的WebPart類加載它的CreateChildControls像這樣:
var control = Page.LoadControl("/_CONTROLTEMPLATES/yourproject/your.ascx");
Controls.Add(control);
通過這種方式,您可以使用Visual Studio的正常方式來佈置您的web部件。比在代碼中構建HTML要好得多,這至少是一種痛苦。
(這也比使用的SmartPart這會導致與trustlevel和部署問題要好得多)
- 1. SharePoint 2010 Web部件個性化佈局
- 2. 在SharePoint中使用UpdatePanel 2013 web部件
- 3. SharePoint 2010的可視化Web部件
- 4. SharePoint 2010可視化Web部件與VS主控頁面上的用戶控件
- 5. SharePoint Web部件和ASP.NET用戶控件
- 6. SharePoint 2010 - 將可視Web部件添加到頁面C#
- 7. SharePoint Web部件
- 8. ASP.NET AJAX控件:UpdatePanel和UpdateProgress
- 9. 在AJAX UpdatePanel回發後滾動到SharePoint Visual Web部件上的位置
- 10. SharePoint AJAX Web部件401.2/3錯誤
- 11. ZF2部件/視圖佈局
- 12. 部署與VS2010開發的可視web部件到SharePoint 2007
- 13. SharePoint Web部件與ASP.NET Web部件
- 14. Sharepoint可視Web部件沒有.cs文件
- 15. 基本的SharePoint Web部件C#
- 16. 從SharePoint Web部件
- 17. 在Sharepoint 2007中部署Web控件
- 18. SharePoint 2010可連接的Web部件
- 19. 使用Visual Studio 2015進行SharePoint 2016可視Web部件部署
- 20. ASP.NET控件在SharePoint Web部件中找不到子控件
- 21. Android控件小部件佈局
- 22. SharePoint Web部件和SharePoint Web服務
- 23. Sharepoint 2010中的可視Web部件僅顯示GridView中的XMLDataSource
- 24. 佈局控件
- 25. Sharepoint Designer - 佈局文件夾?
- 26. 從可視Web部件中的sharepoint url獲取id
- 27. Custom Share AnnouncementListItem Sharepoint 2010中的可視Web部件
- 28. 自定義可視Web部件屬性的SharePoint
- 29. 可視化Web部件中的JQuery SharePoint Foundation
- 30. ASP.NET AJAX服務器控件中的UpdatePanel
感謝您的答覆。我決定繼續使用Table類,因爲它會很快,並且我並不擔心瀏覽器標準符合SharePoint(考慮到默認門戶頁面當前通過W3C驗證程序拋出277錯誤)。 – 2009-12-21 18:51:46