C# C(ADO.NET)将变量作为构造函数参数传递
我有两个表单、类别和产品,它们连接到一个数据源数据库 这个想法是,, 我希望应用程序首先加载表单类别,它显示一些关于现有类别的信息 当我点击按钮products时,products表单应显示categories表单中当前所选类别名称和ID的产品 我已经完成了几乎所有的工作,但我一直在思考如何将类别id和类别名称表单的值传递给products表单中的值,然后显示相应的数据 到目前为止,我创建了一个字符串变量,该变量的值为category文本框的textbox.text,然后在formproducts中创建了categories表单的对象 然后我编写了这段代码,它连接到数据库,并从表products中选择数据,其中id等于categories表单的id:C# C(ADO.NET)将变量作为构造函数参数传递,c#,sql-server,C#,Sql Server,我有两个表单、类别和产品,它们连接到一个数据源数据库 这个想法是,, 我希望应用程序首先加载表单类别,它显示一些关于现有类别的信息 当我点击按钮products时,products表单应显示categories表单中当前所选类别名称和ID的产品 我已经完成了几乎所有的工作,但我一直在思考如何将类别id和类别名称表单的值传递给products表单中的值,然后显示相应的数据 到目前为止,我创建了一个字符串变量,该变量的值为category文本框的textbox.text,然后在formproduct
Categories cat = new Categories();
SqlCeConnection con = new SqlCeConnection("Data Source = Northwind40.sdf");
SqlCeDataAdapter da = new SqlCeDataAdapter("select * from products where [Category ID] = '" + cat.currID + "'", con);
DataSet ds = new DataSet();
da.Fill(ds, "Products");
BindingSource bs = new BindingSource(ds, "Products");
this.productsBindingSource = bs;
但这段代码只显示了一个结果,它只是所选类别id的第一个产品
那我该怎么做呢 此查询“从产品中选择*,其中[Category ID]。。。may只返回一行。
尝试替换以下行:
//SqlCeDataAdapter da = new SqlCeDataAdapter("select * from products where [Category ID] = '" + cat.currID + "'", con);
这一行:
SqlCeDataAdapter da = new SqlCeDataAdapter("select * from products", con);
确保一个类别有多个项目。这里的问题是您没有使用正确的类别表单实例。您已经创建了一个新实例,该实例中没有用户将选择的任何ID值 一种方法是在产品形式中使用参数化构造函数。然后,在类别窗体中的产品按钮的按钮单击事件上:
Product productForm = new ProductForm("send selected values here");
在产品表单构造函数中
string _selectedValues;
private Product(){
// Code here
}
public Product(string selectedValues):this(){
_selectedValues = selectedValues;
}
您可以根据需要选择参数的数据类型。这是什么。productsBindingSource?此数据绑定到哪个控件?表单本身并不显示某些内容,它只是控件的容器。将数据绑定到什么?它是gridview吗?这只是一个测试用例。这绝对不能解决问题。作为评论。