我在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();
}
但它不起作用。
答案 0 :(得分:0)
combsalesid.SelectedItem.ToString()
的价值是多少?
我猜combsalesid
绑定到Datatable
,所以
Selecteditem.ToString()
返回容器对象(a
System.Data.DataRowView
)。
如果是,您只需将SelectedItem
转换为DataRowView
为了从这个DataRowView获取一个值。
看一下这篇文章, listbox selected item give me " System.Data.DataRowView" , C# winforms。 它指的是ListBox,但它是同一个问题。
然后,当您为Dataset
分配DataGridvView
作为数据源时,您还需要设置DataMember
属性,该属性将是DataTable
的名称。另一种方法是将DataTable
作为数据源传递。
grdsalesorder.DataSource = ds.Tables(0);