【问题标题】:How to bind DataGridView from Database after selecting value from combox从组合框中选择值后如何从数据库中绑定 DataGridView
【发布时间】:2013-08-22 13:27:29
【问题描述】:

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

我做过这样的事情:

      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();
    }

但它不起作用。

【问题讨论】:

  • grdsalesorder.DataSource = ds.Tables(0);试试这个代码可能是你的问题我的事

标签: winforms c#-4.0 datagridview combobox sqldataadapter


【解决方案1】:
  • combsalesid.SelectedItem.ToString() 的值是多少?

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

    如果是,您只需将SelectedItem 转换为DataRowView in 为了从这个 DataRowView 中获取一个值。

    看看这篇文章, listbox selected item give me " System.Data.DataRowView" , C# winforms。 它指的是 ListBox 但它是同一个问题。

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

    grdsalesorder.DataSource = ds.Tables(0);  
    

【讨论】:

  • combsalesid 是一个组合框,它也通过 DataReader 绑定到数据库
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
  • 2014-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多