编辑:http://pastebin.com/EVjD95RY
服务代码片段
我的Windows窗体WCF客户端有两个组合框 - 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
,组合框2将变为启用状态,并且应填充companies
中具有type
的所有对象。 {1}}数据成员设置为'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;
}
}
答案 0 :(得分:1)
在您的网络服务上,您可以创建方法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);
}