【问题标题】:hide columns by Id in gridview in asp.net在asp.net的gridview中按Id隐藏列
【发布时间】:2011-07-17 03:39:29
【问题描述】:

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

【问题讨论】:

  • 如果你想在客户端做,你可以将id分配给templatefield控件并使用JS/Jquery来达到预期的效果。
  • 这就是我的意思,TemplateField 不包含任何帮助我们获得其唯一性的属性。你能告诉我如何在 javascript 中获取元素 TemplateField 以便我可以隐藏它吗?
  • @Furqan:我正在等待任何更新......

标签: c# asp.net gridview templatefield


【解决方案1】:

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

我假设您将始终将相同的数据绑定到网格(无论您是否隐藏/显示列),因此您只需要在代码中添加一些逻辑来确定您想要显示的“视图”用户(即您要绑定到的网格)。

【讨论】:

  • 如果我这样做了,那么我需要为每个网格编写所有必需的事件,并且我的页面加载时间会变得非常复杂,并且在每个页面加载时我都需要填充受尊重的网格.. . 这不费时间。否则最好隐藏受人尊敬的列……不是吗?
  • 不一定。您的网格可以共享相同的事件代码。当然,我不确定您当前的事件有多复杂,以及您正在使用哪些事件(即 onDataBind),但您也许可以考虑使用像 MVP 这样的表示模式来帮助降低这种复杂性。但我认为在您的情况下,您可能最好按照其他人的建议在客户端执行此操作。
【解决方案2】:

您始终可以使用列标题文本来执行此操作。循环遍历网格视图的列,并将列的标题文本与声明的常量进行比较并隐藏列,这样,如果您在列之前或之后添加任意数量的列,则不会影响代码。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 2011-04-18
      • 2014-09-09
      • 1970-01-01
      相关资源
      最近更新 更多