4

我想这是一个捆绑到一篇文章中的很多问题。如何制作一个自定义版本的AjaxControlToolkit.TabContainer

我想建立一个精灵般的控制,看起来类似于TabContainer

enter image description here

但我需要一定的自定义设置。这些就像我想将一些帮助文本与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向导控件一样的功能。我找到了一些我上面提到的问题的答案,当我找到时间时会添加它。

+0

为什么不自定义向导控件本身?检查http://forums.asp.net/t/1031636.aspx/1?wizard+control+navigation+on+top+as+tabs – Brij

+0

你最终使用了其中一个答案,还是你采取了另一条路线? – Peter

回答

0

我认为这听起来可能太多了,但我不能想想你想问什么以及你赢的方式等其他简单的方法。

抓住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

0

控制你正在尝试构建并不是非常复杂,但确实涉及许多不同的技术。

我建议从头创建自己的控件,而不是继承现有的控件。可能使用CompositeControl作为基础是最好的,因为它给你很大的灵活性。

对于HelpTextTemplate/ContentTemplate,你需要创建一些ITemplate容器,看看这篇文章http://msdn.microsoft.com/en-us/library/aa478964.aspx如何设置它们。由于您可能想访问HelpTextTemplate中的内容/控件,请查看本文以了解如何访问它们:ASP.Net ITemplate - ways of declaring

对于选项卡,由于这是自定义的,我可能会避免使用AjaxControlToolkit。相反,我会包括对jQuery UI的引用并使用jQuery UI Tabs:http://jqueryui.com/demos/tabs/。您的CompositeControl只需输出一些div,ul/li元素,您将很乐意制作标签。

如果您正在使用AJAX控件工具包标签,那么您仍然可以。您需要在自定义控件中实例化一个实例,将其添加到控件树中,然后使用如下技术:http://msdn.microsoft.com/en-us/library/0e39s2ck.aspx将模板的内容传输到标签页。

能够将控件从工具箱拖放到页面上很简单;如果你的服务器控制库已经和你的网站一样属于同一个解决方案,那么它就会显示出来。在最坏情况下,您可以使用“添加项目”选项并通过浏览来添加DLL。至于双击按钮时如何创建Click事件,这是通过类上的属性完成的,请参阅本教程中有关设置默认事件的信息:http://msdn.microsoft.com/en-us/library/43sxkdeb

至于嵌入javascript到进库,这两个问题涉及如何为jQuery用户界面做到这一点而言,如果你选择去一些其他的途径,应该仍然是恰当的:How to embed jquery library in asp.net custom server control?http://forums.asp.net/t/1599621.aspx/1

至于设计时间的支持,请尝试reviwing关于此的微软文章(包括一个样本):http://msdn.microsoft.com/en-us/library/aa478960.aspx或此CodeProject文章:http://www.codeproject.com/Articles/9227/ASP-NET-Server-Control-Design-Time-Support

相关问题