如何使用服务中的项目填充客户端组合框';的对象列表
本文关键字:列表 对象 组合 客户端 服务 何使用 项目 填充 | 更新日期: 2023-09-27 18:28:22
编辑:http://pastebin.com/EVjD95RY
服务代码片段
我的WindowsFormsWCF客户端有两个组合框-combobox1和combobox2。
我的基于Web的WCF服务有一个包含信息的对象的List
:
public List<CompanyInfo> companies = new List<CompanyInfo>();
不知道为什么companies
在客户端中对我不可用。我对客户端内部的服务做了以下参考。。。
Client.ServiceReference1.ServiceClient client = new ServiceReference1.ServiceClient();
它本应该允许我访问comapnies
,就像这样:client.companies
CompanyInfo的一个典型对象具有以下数据成员:
companyName
、address
、type
在我的客户端中,我做到了这一点,所以当我从combobox1中选择一个项目时,比如说Technology
,combobox2将被启用,并且应该用companies
中的所有对象来填充自己,这些对象的type
数据成员设置为"technology"。
问题是我想不通。我正在尝试像这样使用foreach
:
private void combobox1_SelectedValueChanged(object sender, EventArgs e)
{
if (combobox1.Text != "")
{
combobox2.Enabled = true;
// For every object inside the companies list that have their type set to technology put them into the combobox, disregards the other types
if (combobox1.SelectedText.Equals("Technology"))
{
foreach(ServiceReference1.CompanyInfo ci in ?)
{
if(ci.Type.Equals("technology"))
combobox2.Items.Add(?);
}
} // more options i.e. combobox1.SelectedText.Equals("Medicine")
}
else
combobox2.Enabled = false;
}
}
在您的Web服务上,您可以创建一个方法GetCompaniesOfType并传入所选值。最好是某种ID,而不是字符串值。根据该方法的结果,您可以填充第二个组合框。如果公司列表没有太大变化,您可以添加客户端和/或服务器端缓存,以更快地加载数据。
代码会变成类似的东西
Private void combobox1_SelectedValueChanged(object sender, EventArgs e)
{
combobox2.Items.Clear();
if (combobox1.SelectedValue == null)
return;
var companies = ServiceReference1.GetCompaniesOfType(combobox1.SelectedValue);
combobox2.Items.Add(companies);
}