ASP.NET动态增加TabPanel

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET动态增加TabPanel相关的知识,希望对你有一定的参考价值。

左边是树,右边是TabContainer,点击左边树节点怎么才能在TabContainer增加TabPanel,我会用树运行JS函数,但JS函数不知道怎么写才能增加TabPanel,求高手指点。代码如下:

<body>
<form id="form1" runat="server">
<table width="100%" height="100%" border="3" cellpadding="0" cellspacing="0">
<tr>
<td width=170 id="frmTitle" align="center" valign="top" background="Images/mainbg.gif" >
<asp:TreeView ID="TreeView1" runat="server">
</asp:TreeView>
</td>
<td width=8 valign="middle" style="background:url(Images/bthdbg.gif) repeat-x center top ;" onclick="switchSysBar()"><span class="navPoint"
id="switchPoint" title="关闭/打开左栏" style="cursor:hand"><img src="Images/bthd.gif" name="img1" width=7 height=58 id=img1></span>
</td>
<td align="center" valign="top">
<div id="div1">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<cc1:TabContainer ID="tabs" runat="server" ActiveTabIndex="0" >
<cc1:TabPanel runat="server" HeaderText="我的工作台1" closable="False" ID="TabPanel3" TabIndex="0">
<ContentTemplate>
<iframe src="top.aspx" frameborder="0"></iframe>
</ContentTemplate>
</cc1:TabPanel>
<cc1:TabPanel runat="server" HeaderText="我的工作台2" closable="False" ID="TabPanel4" TabIndex="0">
<ContentTemplate>
<iframe src="tab.aspx" frameborder="0"></iframe>
</ContentTemplate>
</cc1:TabPanel>
</cc1:TabContainer>

</div> </td>
</tr>
</table>
</form>
</body>

我见到网上都是这样写的:
function addTabPanel()
var tabs=$find("tabs");
var tabPanel=tabs.TabPanel;
tabPanel.add(

title:"百度",
id:"baidu",
closable:true,
autoLoad:
url: "www.baidu.com",
mode:'iframe'



).show();



但会报错,估计tabs.TabPanel也是不生效的
我改成document.getElementById("tabs")也不行,很早调试过了,用document.getElementById("tabs")可以取到tabs,但tabPanel为空,就是说tabs.TabPanel是空的,TabPanel应该没效。

var tabs=$find("tabs");这句话使用的jquery来获取的id值吧?jquery必须要写在$(document).ready(function()//这里面)才可以的吧?一般应该是document.getElementById("tabs")吧?具体的你尝试下看看 参考技术A 再说吧 参考技术B 关注。 参考技术C 你的是什么错误?可以调试一下 ,借助IE进行调试本回答被提问者采纳

R Shiny - 将tabPanel动态添加到tabsetPanel(使用renderUI)

【中文标题】R Shiny - 将tabPanel动态添加到tabsetPanel(使用renderUI)【英文标题】:R Shiny - add tabPanel to tabsetPanel dynamically (with the use of renderUI) 【发布时间】:2013-10-28 12:33:00 【问题描述】:

我正在开发一个闪亮的应用程序,我在其中使用tabsetPanel,它是在用户输入某些特定输入时生成的。因此,我想使用renderUI 函数使tabsetPanel 出现/消失。

我现在的问题是 number of tabPanel 元素(tabsetPanel 的参数)也取决于用户输入,顺便说一下:有时我需要 1 个,其他时候我想要更多tabPanels

如何制作?我尝试在 tabsetPanel 参数中包含 conditionPanel 或包含简单的 if()... 条件,但它(并不奇怪......)不起作用。

【问题讨论】:

【参考方案1】:

给你。该代码是相当不言自明的。

library(shiny)
runApp(list(
  ui = pageWithSidebar(
    headerPanel('Dynamic Tabs'),
    sidebarPanel(
      numericInput("nTabs", 'No. of Tabs', 5)
    ),
    mainPanel(
      uiOutput('mytabs')  
    )
  ),
  server = function(input, output, session)
    output$mytabs = renderUI(
      nTabs = input$nTabs
      myTabs = lapply(paste('Tab', 1: nTabs), tabPanel)
      do.call(tabsetPanel, myTabs)
    )
  
))

【讨论】:

Ramnath,这让我很开心,效果很好!非常感谢!! 很高兴能提供帮助。如果您对代码本身有任何疑问,请在此处发布。 添加:添加选项卡后,将相同的uiOutput 添加到所有选项卡但使每个选项卡中的值唯一的正确方法是什么?或者这有什么不同?如果您添加 output$base_tab_ui 并在每个选项卡中呈现它们,则它们都为每个选项卡保留相同的 input$value。有没有办法通过不同的输入变量名称使这些唯一? @Ramnath 您将如何使用自己的内容填充这些动态选项卡中的每一个?也许,比如说,一个 data.frame 的 renderTable / tableOutput 可以使用我用来填充选项卡名称的相同对象进行过滤(即nTabs = length(lags_7)myTabs = lapply(sprintf('%s', lags_7), tabPanel))(此处可能的答案:***.com/questions/39276104/…) @d8aninja,假设您将一些地块添加到名为 myPlots 的列表中,您可以这样做:nTabs = length(myPlots); myTabs = lapply(1:nTabs, function(x)tabPanel(paste0("Tab ",x), renderPlot(myPlots[[x]]))); do.call(tabsetPanel, myTabs)【参考方案2】:

有一种方法可以动态添加tabPanels 没有 renderUI,这可能不像带有renderUI 的版本那么明显。我编写了一个函数 addTabToTabset ,它将任何(列表)tabPanel 附加到选项卡集/导航栏。

与使用 renderUI 相比,此方法具有一组优点

现有的 tabPanel 不会在每次添加新面板时重新呈现。 (更快) 因此,不会重置现有面板中的所有输入变量。 (无需变量存储解决方法) 可以单独选择面板内容的结构。 (在 lapply - renderUI 版本中,所有面板都必须有点统一。)

解决方案和代码示例可以在答案here中找到。如果需要,我也可以在此处发布代码。

【讨论】:

以上是关于ASP.NET动态增加TabPanel的主要内容,如果未能解决你的问题,请参考以下文章

用vs2010平台,c#写的asp.net网站,动态增加和减少Textbox

用户访问页面时如何动态缩放整个 ASP.Net MVC 应用程序

ASP.NET Core中动态为控制器类型添加特性

ASP.Net如何用FileUpLoad实现多文件上传

如何在 asp.net Core 中增加最大线程池限制

增加每页级别的 ASP.Net 超时