簡體   English   中英

如何制作AjaxControlToolkit.TabContainer的自定義版本

[英]How to make a custom version of AjaxControlToolkit.TabContainer

我想這是捆綁到一篇文章中的很多問題。

我想構建一個類似於向導的控件,它看起來類似於TabContainer

在此輸入圖像描述

但我需要某些自定義。 這些就像我想要將一些幫助文本與TabPanel相關聯。 所以我想我想在tabpanel上寫下面的標記:

<cc1:MyTabPanel ID="mtp1" runat="server">
    <HelpTextTemplate>
        This is your step 1 which is about ...
    </HelpTextTemplate>
    <ContentTemplate>
        Content goes here...
    </ContentTemplate>
</cc1:MyTabPanel>

那你怎么做這樣的標記...? 我們從后面的代碼控制如何能夠訪問HelpTextTemplate之間的數據 - 它可能包含服務器控件和所有?

此外,請注意上面的圖片中有一個名為“保存”的按鈕。 用戶只需拖動並放入選項卡面板即可。 當用戶雙擊它時,我們在后面的代碼中生成了一個方法存根(屬於aspx頁面)。 這一切是如何實現的?

為了解決整個解決方案,我意識到我們必須連接一些javascript來模擬該選項卡功能。 這里也有css(注意標簽后面的圖像 - 漸變等)。 我正在考慮的方面是將其變成一個控件,用戶可以像工具包的tabcontainer控件一樣使用開箱即用。 因此,css / javascript應該被捆綁。 怎么做到這一點?

編輯:

我也對控制設計師(設計時交互)部分感興趣。 我正在尋找與asp.net向導控件相同的功能。 我發現上面的一些問題的答案會在我找到時間時添加它。

為了將腳本或圖像嵌入到asp.net自定義控件中,我找到了以下網站中提到的解決方案:

使用自定義asp.net控件嵌入js資源

我在這里建議它可能聽起來太多了,但我想不出其他簡單的方式來解決你的問題以及你贏得它的方式。

獲取TabContainer的源代碼,克隆它,並根據該源代碼進行所有自定義設置。 第一步是獲取這個asp.net工具包的完整源代碼,並使構建工作。 第二步是使用新名稱添加TabControl的克隆。 然后,您可以使用此克隆根據需要進行更改。 最后一步是嘗試在獨立庫中分離自定義控件(如果可能)。

下載完整的asp.net ajax控件工具包的最新版本

http://ajaxcontroltoolkit.codeplex.com/SourceControl/list/changesets

在這里,您只能在線查看TabContainer的源代碼

http://ajaxcontroltoolkit.codeplex.com/SourceControl/changeset/view/2c482e5ad6c4#Server%2fAjaxControlToolkit%2fTabs%2fTabContainer.cs

您嘗試構建的控件並不是非常復雜,但它確實涉及許多不同的技術。

我建議從頭開始創建自己的控件,而不是繼承現有的控件。 可能使用CompositeControl作為基礎是最好的,因為它為您提供了很大的靈活性。

對於HelpTextTemplate / ContentTemplate,您需要創建一些ITemplate容器,請查看本文http://msdn.microsoft.com/en-us/library/aa478964.aspx ,了解如何設置它們。 由於您可能想要訪問HelpTextTemplate中的內容/控件,請查看本文以了解如何訪問它們: ASP.Net ITemplate - 聲明方式

對於選項卡,由於這是自定義的,我可能會避免使用AjaxControlToolkit。 相反,我會包含對jQuery UI的引用並使用jQuery UI選項卡: http//jqueryui.com/demos/tabs/ 你的CompositeControl只需輸出一些div,ul / li元素,你就可以選擇制作標簽了。

如果您注意使用AJAX Control Toolkit選項卡,那么您仍然可以。 您需要在自定義控件中實例化一個實例,將其添加到控件樹,然后使用這樣的技術: http//msdn.microsoft.com/en-us/library/0e39s2ck.aspx來傳輸模板的內容到標簽頁。

能夠將控件從工具箱拖放到頁面上很簡單; 如果您的服務器控件庫已經是與您的網站相同的解決方案的一部分,那么它將只顯示。 在最壞的情況下,您可以使用“添加項”選項並通過瀏覽來添加DLL。 至於雙擊按鈕時如何創建Click事件,這是通過類上的屬性完成的,請查看本教程設置默認事件: http//msdn.microsoft.com/en-us / library / 43sxkdeb

至於將javascript嵌入到庫中,這兩個問題涵蓋了如何專門針對jQuery UI執行此操作,如果您選擇其他路徑它應該仍然是相關的: 如何在asp.net自定義服務器控件中嵌入jquery庫? http://forums.asp.net/t/1599621.aspx/1

至於設計時支持,請嘗試修改微軟的文章(包括樣本): http//msdn.microsoft.com/en-us/library/aa478960.aspx或此CodeProject文章: http:// www。 codeproject.com/Articles/9227/ASP-NET-Server-Control-Design-Time-Support

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM