C#如何在多个列表框中显示项目?

时间:2018-10-11 14:18:11

标签: c# asp.net

我们正在做一个学校作业,我们应该在其中做一个页面,该页面必须能够显示所有客户的完整列表,并且还能够显示来自日德兰半岛的所有人的姓名列表,来自Funen的所有客户的名称以及来自新西兰的所有客户的名称的列表。

Here is the screenshot

问题:

系统将不显示特定于一个地区(例如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();




        }




}

}`

2 个答案:

答案 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);