Silverlight Datagrid刷新

时间:2011-07-29 20:43:21

标签: silverlight wcf data-binding datagrid

所以我在Silverlight中有一个datagrid绑定到一个填充类列表的WCF。我基本上将一个参数传递给Linq查询。当我进行第二次查询时,我获得了两倍的结果,第三次三次等等。当我向服务发送呼叫时,我可以做些什么才能获得一组结果。我附上了我的代码,以防它帮助任何人。

    private void button1_Click(object sender, RoutedEventArgs e)
    {

        dgOrder.ItemsSource = null;
        Uri address = new Uri(Application.Current.Host.Source, "../Services/Service1.svc");
        //var client = new Services.dataserviceClient("CustomBinding_dataservice", address.AbsoluteUri);
        var client = new ServiceReference2.Service1Client("CustomBinding_Service1", address.AbsolutePath);

        client.GetOrderCompleted += (s, ea) =>
            {
                dgOrder.AutoGenerateColumns = false;
                //dgOrder.ColumnWidth.Value = 100;





                dgOrder.Columns.Add(CreateTextColumn("SKU", "SKU"));
                dgOrder.Columns.Add(CreateTextColumn("productname", "Product Name"));
                dgOrder.Columns.Add(CreateTextColumn("itemnumber", "Item Number"));
                dgOrder.Columns.Add(CreateTextColumn("cost", "Cost"));
                dgOrder.Columns.Add(CreateTextColumn("asin", "ASIN"));
                dgOrder.Columns.Add(CreateTextColumn("pendingorder", "Rank"));
                dgOrder.Columns.Add(CreateTextColumn("rank", "Node"));
                //dgOrder.Columns.Add(CreateTextColumn("w4", "AMZN"));
                dgOrder.Columns.Add(CreateTextColumn("amazon", "AMZN"));
                dgOrder.Columns.Add(CreateTextColumn("ourprice", "OurPrice"));
                dgOrder.Columns.Add(CreateTextColumn("bbprice", "BuyBox"));
                dgOrder.Columns.Add(CreateTextColumn("afner", "AFN"));
                dgOrder.Columns.Add(CreateTextColumn("quantity", "INV"));
                dgOrder.Columns.Add(CreateTextColumn("w4", "W4"));
                dgOrder.Columns.Add(CreateTextColumn("w3", "W3"));
                dgOrder.Columns.Add(CreateTextColumn("w2", "W2"));
                dgOrder.Columns.Add(CreateTextColumn("w1", "W1"));
                dgOrder.Columns.Add(CreateTextColumn("order", "Order"));
                dgOrder.Columns.Add(CreateTextColumn("total", "Total"));
                dgOrder.Columns.Add(CreateTextColumn("profit", "Profit"));
                dgOrder.Columns.Add(CreateTextColumn("percent", "Percent"));
                dgOrder.Columns.Add(CreateHyperlink("asin"));
                dgOrder.ItemsSource = ea.Result;
                Original = ea.Result;

            };
        client.GetOrderAsync(txtCompany.Text);

    }

1 个答案:

答案 0 :(得分:3)

问题是,每次按下按钮时,您都在创建一个新的(重复的)事件处理程序。由于每个按钮都有额外的事件,您可以获得额外的数据集。您需要在Button.Cliked事件之外创建Event.Completed方法。

澄清:

    public partial class NewPage : Page
    {
        Uri address = new Uri(Application.Current.Host.Source, "../Services/Service1.svc");
        ServiceReference2.Service1Client client = new ServiceReference2.Service1Client("CustomBinding_Service1", address.AbsolutePath);

        public NewPage()
        {
            client.GetOrderCompleted += (s, ea) =>
            {
                //YOUR CODE
            };
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {

            dgOrder.ItemsSource = null;
            client.GetOrderAsync(txtCompany.Text);

        }

}