【问题标题】:get header of a selected gridview column获取选定的gridview列的标题
【发布时间】:2015-06-30 13:20:45
【问题描述】:

我正在用 C# 制作一个简单的 Web 应用程序。我正在处理的网站包含一个 GridView。 GridView 显示来自 Oracle SQL 数据表的数据。

现在我想为我的表设置过滤选项。但我想让切换列变得非常容易,并且我想让过滤和排序每一列成为可能。

我已经制作了一个可以立即过滤特定列的 TextBox。但我想让用户选择列。我的想法是让用户选择一列,然后他只需将他的标准写入文本框。

我目前的主要问题是弄清楚如何让用户能够选择一列并获取其索引/标题文本。

例如:如果用户想要过滤/排序列并以某种方式选择它,我想获取索引/标题文本。

我是 asp.net 的新手,我真的不知道如何实现这一点。我已经进行了很多搜索以找到任何解决方案,但是关于此的内容并不多。

我将它用于我的过滤方法(有效):

dt = GridView1.DataSource as DataTable;
dt.DefaultView.RowFilter = string.Format("Name LIKE '%{0}%'", textBox1.Text);
GridView1.DataSource = dt;
GridView1.DataBind();

【问题讨论】:

  • 如果用户可以选择多个列进行排序,那么如何定义排序顺序?你总是先按最低索引排序吗?哪个先被选中?
  • @sr28 这些都是好点,但实际上这对我来说不是很重要,因为我以后可以自己解决这个问题。我的主要问题是获取用户希望过滤/排序的列的索引。目前我不知道如何实现它。
  • 如果要按多列排序,这一点很重要。允许用户对 1 列进行过滤或排序的设计很可能与允许某人在多列上进行过滤的设计不同。

标签: c# asp.net gridview


【解决方案1】:
  1. 对于按列排序,请在 Gridview 的标签内指定:

      AllowSorting="true">

  </asp:gridview>
  1. 获取任意列的标题文本:

    Gridview.Columns[i].HeaderText

  2. 无法按标题上带有复选框的列进行过滤

【讨论】:

  • 好的,谢谢您的回答。第三点还有其他解决方案吗?它不必是复选框。有没有办法解决这个问题?我希望可以过滤每一列。例如,如果我想搜索名字 Paul,那么它应该根据这个条件过滤表格。
  • 我会在搜索文本框旁边创建一个包含列名的下拉列表。这样他们就可以选择他们想要搜索的条件,而您不必担心他们点击了哪一列。要么这样,要么您可以创建一个通用搜索框,在每一列中搜索他们键入的内容。
  • 我同意@MarcieKaiser 这是一种常用技术,如果需要按多列排序,通常人们会使用 2 个下拉菜单。同样对于搜索条件,我喜欢打开文本框的想法,因此当您在 sql 搜索中搜索该条件时,您可以在与该条件匹配的所有列中使用 LIKE。 SELECT * FROM user WHERE firtname like '%searchcriteria%' OR lastname like '%searchcriteria%'
猜你喜欢
  • 1970-01-01
  • 2011-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多