使用下拉列表和文本框过滤器进行网格视图搜索?

时间:2012-04-30 17:22:01

标签: c# sql gridview

先生/女士现在我的问题是,我想使用下拉列表和文本框过滤网页的网格视图。

我的意思是说我们写一个SQL,如:

Select  * from student where roll_no = 101;

右,

现在我应该通过下拉列表选择上面语句中的列(roll_no),并且文本框应输入值(上述语句中的101)。

简而言之,我想使用下拉列表填充网格视图,并通过单击按钮填充文本框的值..

开发我正在使用数据集和表适配器。

请帮帮我..

2 个答案:

答案 0 :(得分:1)

我使用下拉列表(组合框)和文本框以下列方式过滤我的DataGridView,我认为这正是您要找的。

首先,填充DataGridView。您声明自己使用的是DataSetTableAdapters。我猜你使用BindingSource将数据绑定到DataGridView。如果是这种情况,那么您可以通过Filter {/ 1> BindingSource数据private void ApplyFilter() { var filterEntered = FilterTextBox.Text.Trim().ToLower(); MyBindingSource.RemoveFilter(); // remove previous filter string filterText = string.Empty; string filterComboText = string.Empty; switch (FilterComboBox.Text) { case "Profile": filterComboText = "TSProfile"; // column name in the query break; case "User Id": filterComboText = "TSUserId"; break; case "Center": filterComboText = "TSCenter"; break; case "Prefix": filterComboText = "TSPrefix"; break; } filterComboText = filterComboText + " = '"; filterText += (string.IsNullOrEmpty(filterComboText) ? string.Empty : filterComboText); filterText += (!string.IsNullOrEmpty(filterText) && !string.IsNullOrEmpty(filterEntered) ? filterEntered + "'" : string.Empty); MyBindingSource.Filter = filterText; }

我的设置类似于:

enter image description here

我的组合框包含我想要在我的过滤器中使用的字段,文本框是我将要应用的值。组合框中的值是用户友好的名称,因此他们将了解它们正在过滤哪个字段。

应用过滤器的代码是:

{{1}}

基本上它正在做的是获取组合框的文本名称,然后获取文本框中的文本并将Filter应用于BindingSource。

MSDN有一篇关于过滤的文章包含完整的示例代码。

我建议的一件事是为用户提供一种轻松删除过滤器的方法,我使用“删除过滤器”按钮。

答案 1 :(得分:0)

如果你先向我们展示一些代码,那将会很有帮助。

你可以尝试这样的事情:

在您的代码隐藏中,将项目添加到您的下拉列表中。

List<yourObject> list = new List<yourObject>();
foreach (yourObject i in list)
 {
  DropdownList1.Items.Add(new ListItem("" i.name, "" + i.id));
 }

我只是举个例子,i.name可以是某个学生的名字,i.id将是与该学生相关的id。

确保将下拉列表的autopostback属性设置为true,如下所示:

 <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
        onselectedindexchanged="DropDownList1_SelectedIndexChanged">

然后,在下拉列表的所选索引更改事件中,执行以下操作:

 protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
yourDataControl.DataSource = someMethod(Convert.toInt32(DropDownList1.SelectedValue));
yourDatacontrol.DataBind();
}

正如我所说,我不完全确定你要做什么,或者你是怎么做的。 我正在描述的方式,您不需要文本框输入特定值,通过在下拉列表中选择一个项目,您将自动获得一个值:在这种情况下,与下拉列表中所选项目相关联的ID。