1

我当前的任务是显示数据对象内容的 ASP.NET 页面。该对象的属性之一是命名列表的列表。为了不透明,我们称它为 a Company,它有一个命名位置列表,每个位置都与(仅)一个员工列表相关联。

万一这很重要,Company这个属性是否像这样实现:

IDictionary<string, IList<Employee>> mEmployeesByLocation;

这些列表中的每一个都可以很容易地显示在 aGridView.我想我想要的是将整个东西放在 a 中TabContainer并有一个单独TabPanel的包含每个网格。选项卡和网格将彼此相同,每个选项卡的名称将是关联的字典键。

有没有好的方法来做到这一点?

我的第一个想法是使用 a Repeater,但你不能把一个放在 a 里面TabContainer。解析器不知道如何处理它。

所以,看起来我必须以编程方式创建选项卡。很公平。如果可能的话,我想避免创建单独的网格控件并以编程方式分配它们的所有属性。

我得到的一个建议是子类化TabPanel并使其像用户控件一样工作,包含 aGridView并知道如何将数据绑定传递给它。不过,我不确定该怎么做,或者它是否会起作用。我知道如何对控件进行子类化,但我认为某些东西不能TabPanel像用户控件那样既可以像 a 一样起作用又可以包含控件。

想法?输入?更好的想法?

4

2 回答 2

0

没有对该控件的内置支持;这是在第三方控件中,但不在 AJAX 控件工具包中。您必须以编程方式加载选项卡,如果网格非常接近,请使用具有网格的用户控件(可以通过http://aspalliance.com/565_Dynamic_Loading_of_ASPNET_User_Controls中的 LoadControl 方法加载用户控件)。

这样,您就可以通过编程方式创建 UI。您必须知道,您可能需要在每次页面加载时重新创建 UI(更多信息请参见:http ://www.asp.net/(S(wnmvzu45umnszm455c1qs522))/learn/ajax-videos/video-286 .aspx)。动态控件不会在页面回发中保留。我不知道标签是否会保留。

HTH。

于 2010-02-09T17:48:08.850 回答
0

由于TabContainer. 在我坚持使用的工具包版本中,该控件无法正确处理跨回发动态创建的选项卡。

问题似乎出在LoadControlStateActiveTabIndex财产上。加载状态时,容器天真地尝试将选项卡索引设置为以前的任何值。由于此时动态选项卡尚未创建LoadControlState,因此加载的索引很可能是无效的。在这种情况下,属性会抛出一个ArgumentOutOfRangeException并且包含页面会爆炸。

(我确实找到了一个部分解决方法,但它根本无法LoadControlState工作,并且最终变得太丑而无法打扰。)

由于复杂的办公政策原因,我不能升级或修改我的 AjaxControlToolkit 版本,但对于其他任何有此错误的人,它显然已于去年 6 月修复:http:
//www.codeplex.com/AjaxControlToolkit/WorkItem/View .aspx?WorkItemId=15658

于 2010-02-12T19:40:42.400 回答