2011-03-17 53 views
1

我有asp.net应用程序,其中有编辑,删除,添加选项的可编辑网格视图。这个网格具有通常的模板字段。我想隐藏一些列。我知道我可以通过使用列索引来做到这一点。但我不想跟随它。相反,我想通过Id隐藏列。这是因为如果在我的应用程序中进一步需要添加更多的列,那么需要更改代码增益并在核心中再次进行。所以我选择这种方式。卜,因为我发现<asp:TemplateField />不包含Id属性。所以我不可能通过Id隐藏<asp:TemplateField/>。对此的任何补救措施?在asp.net的gridview中通过Id隐藏列

+1

如果你想在客户端做到这一点,你可以指定id到templatefield控件并使用JS/Jquery获得所需的效果。 – 2011-03-17 05:26:36

+0

这就是我所说的,TemplateField不包含任何帮助我们获得其独特性的属性。你能告诉我如何在JavaScript中获取元素TemplateField,以便我可以隐藏它吗? – 2011-03-17 05:31:20

+0

@ Furqan:我正在等待的任何更新... – 2011-03-17 05:49:04

回答

0

也许在模板字段内创建一个带有id的div,并用客户端代码隐藏该div。

1

您可以随时使用列标题文本进行操作。在网格视图的列中运行循环,并将列的头部文本与声明的常量进行比较,并以这种方式隐藏列,如果在列之前或之后添加任意数量的列将不会影响代码。

+0

多数民众赞成它......我认为这会对我有用。让我试试 – 2011-03-17 05:32:28

-1

对于每个要显示给用户的“视图”,可能只是有不同的网格标记,所以一个网格包含所有列,另一个网格包含有限列。

我假设你总是将相同的数据绑定到网格(不管你是隐藏/显示列),所以你只需要在你的代码中的一些逻辑来确定你想要的“视图”显示用户(即你想绑定什么网格)。

+0

如果我这样做,那么我需要为每个网格编写所有必需的事件,并且我的页面加载时间将变得非常复杂,以及每个页面加载我需要填充受尊敬的网格...这不是耗时的。否则最好隐藏受尊重的列......不是吗? – 2011-03-17 05:48:08

+0

不一定。你的网格可以共享相同的事件代码。当然,我不确定你当前的事件有多复杂,以及你正在使用哪些事件(即onDataBind),但是你也许可以考虑使用像MVP这样的表示模式来帮助减少这种复杂性。但我认为就你的情况而言,你可能会像其他人所建议的那样,在客户端做到这一点。 – rfriday 2011-03-17 06:03:06