Winforms 从combox中选择值后如何从数据库绑定DataGridView

Winforms 从combox中选择值后如何从数据库绑定DataGridView,winforms,c#-4.0,datagridview,combobox,sqldataadapter,Winforms,C# 4.0,Datagridview,Combobox,Sqldataadapter,我正在用C#制作一个Windows窗体。我有一个DataGridView,我需要用where子句将这个网格视图绑定到数据库,其值将等于combobox所选项 我做过这样的事情: private void combsalesid_SelectedIndexChanged(object sender, EventArgs e) { SqlCommand cmr = DataConnection.GetConnection().CreateCommand();

我正在用C#制作一个Windows窗体。我有一个
DataGridView
,我需要用where子句将这个网格视图绑定到数据库,其值将等于combobox所选项

我做过这样的事情:

      private void combsalesid_SelectedIndexChanged(object sender, EventArgs e)
    {
        SqlCommand cmr = DataConnection.GetConnection().CreateCommand();
        cmr.CommandText = "select * from SalesOrder where SalesId = @salesis";
        cmr.Parameters.Add(new SqlParameter("@salesis", combsalesid.SelectedItem.ToString()));
        SqlDataAdapter da = new SqlDataAdapter(cmr);
        DataSet ds = new DataSet();
        da.Fill(ds);
        grdsalesorder.DataSource = ds;

        cmr.Dispose();
        DataConnection.CloseConnection();
    }
但它不起作用。

  • combsalesid.SelectedItem.ToString()的值是多少

    我猜
    combsalesid
    绑定到一个
    Datatable
    ,所以
    Selecteditem.ToString()
    返回容器对象(a
    System.Data.DataRowView

    如果是,只需将
    SelectedItem
    转换为中的
    DataRowView
    以便从此DataRowView获取值

    看看这个帖子, . 它指的是列表框,但它是同一个问题

  • 然后,当您将
    数据集
    指定为
    DataGridvView
    的数据源时,还需要设置
    DataMember
    属性,该属性将是
    DataTable
    的名称。另一种方法是将
    DataTable
    作为数据源传递

    grdsalesorder.DataSource = ds.Tables(0);  
    

combsalesid是一个组合框,它还通过DataReadergrdsalesorder.DataSource=ds.Tables(0)绑定到数据库;试试这个代码可能是你的问题