【问题标题】:Data Grid Error when Reloading page重新加载页面时出现数据网格错误
【发布时间】:2018-07-24 08:51:11
【问题描述】:

我有一个添加客户 UI,它应用了一个数据网格来显示所提供的条目,但如果我在已经显示时重新选择添加客户,它将再次添加条目。

第 1-3 行是原始的,第 4-6 行是重复的。有谁知道如何限制这种情况的发生??

在我的 MainActivity 中,我有一个带有 Frame 的菜单导航来填充 xaml 页面。下面是初始化类的代码。

private void AddCustomer_Click(object sender, RoutedEventArgs e)
{
    Main.Content = new AddCustomerUI();
}

Frame 被称为 Main,然后将 xaml 页面分配给它的 Main.content

public partial class AddCustomerUI : Page
{
    public AddCustomerUI()
    {
        InitializeComponent();
        SetupCustomer();
        customerDataGrid.ItemsSource = App.customers;
    }
    private void SetupCustomer()
    {
        var customer = new Customer { FirstName = "Timothy", LastName = "Jennings", Email = "tim.jennings@gmail.com", Phone = "0275 202020",
            Address = new Address { Street = "100 Burt Road", Suburb = "Howick", City = "Auckland", Country = "New Zealand" }
        };
        App.customers.Add(customer);
        customer = new Customer { FirstName = "Brian", LastName = "Jones", Email = "bjones@gmail.com", Phone = "0275 903070",
            Address = new Address { Street = "100 Vincent Road", Suburb = "St Lukes", City = "Auckland", Country = "New Zealand" }
        };
        App.customers.Add(customer);
        App.customers.Add(new Customer { FirstName = "Terry", LastName = "Teo", Email = "tete@mana.com", Phone = "021 756 382",
            Address = new Address { Street = "23 Ford St", City = "Auckland", Suburb = "Pakuranga", Country = "New Zealand" }
        });

    }

    private void SaveCustomer_Click(object sender, RoutedEventArgs e)
    {
        if (string.IsNullOrWhiteSpace(fNameTxt.Text) || string.IsNullOrWhiteSpace(lNameTxt.Text) || string.IsNullOrWhiteSpace(emailTxt.Text)
            || string.IsNullOrWhiteSpace(phTxt.Text))
            //MessageBox.Show("Empty Fields", "Please look at filling out all fields on the form.");
            return;
        var customer = new Customer
        {
            FirstName = fNameTxt.Text, LastName = lNameTxt.Text, Email = emailTxt.Text, Phone = phTxt.Text,
            Address = new Address { Street = streetTxt.Text, Suburb = suburbTxt.Text, City = cityTxt.Text, Country = countryTxt.Text }
        };
        App.customers.Add(customer);
        customerDataGrid.Items.Refresh();
        ResetText();
    }
    private void ResetText()
    {
        fNameTxt.Text = string.Empty; lNameTxt.Text = string.Empty;
        emailTxt.Text = string.Empty; phTxt.Text = string.Empty;
        streetTxt.Text = string.Empty; cityTxt.Text = string.Empty;
        suburbTxt.Text = string.Empty; countryTxt.Text = string.Empty;
    }
}

【问题讨论】:

  • 向我们展示 AddCustomerUI 类,我确定在 costructor 中你做错了什么。
  • 我已经添加了..

标签: c# wpf datagrid wpfdatagrid


【解决方案1】:

您遇到的问题在于 SetupCustomer,您没有清除列表,因此您的收藏中有多个条目。

private void SetupCustomer()
{
    App.customers.Clear();
    var customer = new Customer { FirstName = "Timothy", LastName = "Jennings", Email = "tim.jennings@gmail.com", Phone = "0275 202020",
     Address = new Address { Street = "100 Burt Road", Suburb = "Howick", City = "Auckland", Country = "New Zealand" }
        };
     App.customers.Add(customer);
     customer = new Customer { FirstName = "Brian", LastName = "Jones", Email = "bjones@gmail.com", Phone = "0275 903070",
     Address = new Address { Street = "100 Vincent Road", Suburb = "St Lukes", City = "Auckland", Country = "New Zealand" }
        };
     App.customers.Add(customer);
     App.customers.Add(new Customer { FirstName = "Terry", LastName = "Teo", Email = "tete@mana.com", Phone = "021 756 382",
     Address = new Address { Street = "23 Ford St", City = "Auckland", Suburb = "Pakuranga", Country = "New Zealand" }
     });

}

【讨论】:

  • 这是行业标准吗?或最佳实践?或者这是修复虚拟数据解决方案的解决方案?感谢您的帮助,这已部分解决了该问题....因为我的 Id 属性仍在增加。有什么解决方案可以解决这个问题?
  • 好吧,如果你只想设置你的虚拟数据一次,你可以做类似if (App.customers.Count > 0) return;而不是App.customers.Clear();。这只会设置你的虚拟列表一次。
  • 谢谢!我现在完全明白你的意思了(就像一个灯泡亮了!)。干杯
【解决方案2】:

AddCustomerUI 类的 SetupCustomer 方法中在开头添加

 App.customers.Clear(); 

这应该有助于您处理重复的数据。

【讨论】:

  • 谢谢..但是我的 Id 属性仍然通过构造函数递增。无论如何要解决?
  • 我们不知道你的App 类是什么样子的,你的customerDataGrid 是如何定义的,所以很难说有什么问题
  • 这是一个全球静态客户列表
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-21
  • 2022-12-14
  • 2012-02-23
  • 2019-05-17
  • 2023-03-27
  • 2021-06-05
相关资源
最近更新 更多