将参数传递给where子句并刷新网格视图 - C#

时间:2016-06-20 11:04:09

标签: c# datagridview combobox

我想通过在组合框中选择一个值来过滤数据网格视图。

我的代码的顶部是一个表单,它根据从视图中提取的客户配置文件将数据插入到我们服务器上的表中,但是当用户在顶部组合框中选择客户时,我希望datagridview显示以前的交易来自表格。

下面的代码包含我将插入实际代码的位置的注释,但想知道我是否在正确的轨道上。

 private void combobox_SelectedChangeCommitted(object sender, EventArgs e)
 {
   // CONNECTION STRING
  {
            connection.Open();

   //change value into a parameter ready for the next step

   //run SQL Command (select * from xxxx where column = @parameter)

   //FILL DATA GRID

            connection.Close();
   }
  }

此致

尼尔

1 个答案:

答案 0 :(得分:1)

您应该将您的Combobox SelectedItem属性绑定到ViewModel,如下所示:

SelectedItem="{Binding UserSelection, Mode=TwoWay}"

然后在您的ViewModel中,您的属性就是这样:

private string _userSelection;
public string UserSelection
{
    get
    {
        return _userSelection;
    }
    set
    {
        _userSelection = value;
        UpdateData();
        OnPropertyChanged();
    }
}

然后你将实现这样的数据库代码:

private void UpdateData(){
    Task.Factory.StartNew(()=>{
        connection.Open();
        DataProperty = yourNewData;
        connection.Close();
    });
}

这样你就不会在UI线程上进行任何数据库读取/更新,从而锁定你的应用程序。

当然,在一个体面的WPF应用程序中,你将DataGrid绑定到我在示例代码中显示的DataProperty