代码之家  ›  专栏  ›  技术社区  ›  Taryn Frank Pearson

使用组合框搜索条件

  •  2
  • Taryn Frank Pearson  · 技术社区  · 15 年前

    我对winforms和C比较陌生,我正在开发一个允许用户执行搜索的应用程序。要搜索数据,他们可以使用以下命令:

    -包含6个选项的组合框

    -他们将根据选定的组合框搜索输入信息的文本框。

    我有一个存储过程,每个搜索选项都有一个参数。此过程可用于搜索任何选项。此过程已添加到项目中,我正通过TableAdapter连接到它。

    我正在努力的是将这些搜索条件中的每一个传递给代码的最佳方式。我是这样开始的:

    public void DataRefresh(string searchCombo, string searchValue)
        {
            string returnMessage = string.Empty;
            switch (searchCombo)
            {
                case "Acct":
                    Data.Manager.TAM.SearchDataTableAdapter.Fill(DataSet.spSearchData, ref returnMessage, searchValue, null, null, null, null, null);
                    break;
            }
            SearchDataBindingSource.DataSource = DataSet.spSearchData;
        }
    

    有更好的办法吗?我想是的,但我似乎想不出办法。

    任何建议都太好了!

    2 回复  |  直到 15 年前
        1
  •  1
  •   Taryn Frank Pearson    15 年前

    我想出了另一种方法来实现它,我没有将6个参数传递给存储过程,而是将其更改为只传递两个combobox值和文本框值。然后我将If语句放在存储过程中,以处理传递的值。

    谢谢你的帮助。

        2
  •  1
  •   Will Marcouiller    15 年前

    在我看来 searchCriteria 可以是一个对象,从而使其可用于其他搜索。

    然后,组合框应包含此搜索对象的属性名称,然后您可以如下所示:

    public void DataRefresh(string comboBoxPropertyName, object value) {
        var query = from s in searchResults
                    where (s.GetType().GetProperties()[comboBoxPropertyName].GetValue(s) = value)
                    select s
    
        SearchDataBindingSource.DataSource = query.ToList();
    }
    

    在哪里? searchResults 表示SP的结果。可能需要从TableAdapter进行转换,我不知道。我从来没上过这门课。

    免责声明: 这段代码是按从我头顶开始未编译的方式提供的。这段代码的目的只是为了表达一个观点,不应被认为是绝对的解决方案,因为我不知道这是否有可能让您以这种方式处理您决定使用的对象,但我希望这能简化您的处理方式。