4

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

我的意思是说就像我们编写 SQL 一样:

Select  * from student where roll_no = 101;

正确的,

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

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

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

请帮我解决这个问题..

4

2 回答 2

1

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

首先,填充您的DataGridView. 您声明您正在使用DataSetand TableAdapters。我猜您正在使用 aBindingSource将您的数据绑定到您的DataGridView. 如果是这种情况,那么您可以Filter通过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;
}

基本上它在做什么,是获取组合框的文本名称,然后是文本框中的文本,并将过滤器应用于 BindingSource。

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

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

于 2012-05-01T12:07:53.260 回答
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。

于 2012-04-30T17:51:26.167 回答