我们正在做一个学校作业,我们应该在其中做一个页面,该页面必须能够显示所有客户的完整列表,并且还能够显示来自日德兰半岛的所有人的姓名列表,来自Funen的所有客户的名称以及来自新西兰的所有客户的名称的列表。
问题:
系统将不显示特定于一个地区(例如Jutland)的客户,而是将先前和新客户(来自不同地区)都添加到代表不同地区的同一字段中。因此,系统无法区分客户的各个区域。
在上面的屏幕截图中,名称斯坦尼斯拉夫应该是ListBox
中唯一的名字。但是,也添加了属于另一个区域的Sebastian,因此也添加了另一个列表框。尽管我们不确定,但我们认为它可能与foreach
循环有关。
任何帮助将不胜感激!
namespace _2ndHandinCsharp
{
public partial class register : System.Web.UI.Page
{
private CustomerTank thetank;
protected void Page_Load(object sender, EventArgs e)
{
if (Application["SharedCustomerTank"]== null)
{
Application["SharedCustomerTank"] = new CustomerTank();
}
thetank = (CustomerTank)Application["SharedCustomerTank"];
}
protected void ButtonUpdate_Click(object sender, EventArgs e)
{
thetank = (CustomerTank)Application["SharedCustomerTank"];
UpdateCustomerListView();
}
private void UpdateCustomerListView()
{
ListBox1.Items.Clear();
List<Customer> customerInTheTank = thetank.TheCustomers();
foreach(Customer c in customerInTheTank)
{
ListBox1.Items.Add(c.ToString());
}
}
private void UpdateCustomerListViewJutland()
{
List<Customer> customerInTheTank = thetank.TheCustomers();
for (int i = 0; i < customerInTheTank.Count; i++)
{
if (DropDownListRegion.SelectedValue == "Jutland")
{
ListBoxJutland.Items.Add(customerInTheTank[i].Name);
}
}
}
private void UpdateCustomerListViewFunen()
{
List<Customer> customerInTheTank = thetank.TheCustomers();
for (int i=0; i<customerInTheTank.Count;i++)
{
if (DropDownListRegion.SelectedValue == "Funen")
{
ListBoxFunen.Items.Add(customerInTheTank[i].Name);
}
}
}
protected void ButtonAddCustomer_Click(object sender, EventArgs e)
{
Customer c = new Customer(
TextBoxName.Text,
TextBoxPassword.Text,
int.Parse(TextBoxAge.Text),
TextBoxZip.Text,
DropDownListRegion.Text);
Application.Lock();
thetank = (CustomerTank)Application["SharedCustomerTank"];
thetank.AddCustomer(c);
Application["SharedCustomerTank"] = thetank;
Application.UnLock();
UpdateCustomerListView();
UpdateCustomerListViewJutland();
UpdateCustomerListViewFunen();
}
}
}`
答案 0 :(得分:2)
看起来您使用了错误的条件:
相反,
for (int i = 0; i < customerInTheTank.Count; i++)
{
if (DropDownListRegion.SelectedValue == "Jutland")
{
ListBoxJutland.Items.Add(customerInTheTank[i].Name);
}
}
您应该查看客户的实际位置,而不是查看区域框中的当前选择:
ListBoxJutland.Items.Clear();
for (int i = 0; i < customerInTheTank.Count; i++)
{
if (customerInTheTank[i].Region == "Jutland")
{
ListBoxJutland.Items.Add(customerInTheTank[i].Name);
}
}
我假定Region
。您的代码中未包含客户类上region属性的名称。
请注意,我在循环之前添加了一个Clear()
语句,如果该函数被重复调用,它将防止一次又一次地添加客户名。
答案 1 :(得分:1)
您是对的。问题在于您的for-each循环。当您检查该地区是否是Funen或Jutland时,您会忘记检查要添加的客户是否也来自该地区。您只需要一个附加的IF语句条件。像这样的事情
wp_set_object_terms($attachment_id, 'poster', 'category', true);