【问题标题】:Silverlight Datagrid RefreshSilverlight 数据网格刷新
【发布时间】:2011-07-29 20:43:21
【问题描述】:

所以我在 Silverlight 中有一个数据网格,它绑定到填充类列表的 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);

    }

【问题讨论】:

    标签: silverlight wcf data-binding datagrid


    【解决方案1】:

    问题是,每次按下按钮时,您都会创建一个新的(重复的)事件处理程序。由于您按下的每个按钮都有一个额外的事件,因此您会获得额外的数据集。您需要在 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);
    
            }
    
    }
    

    【讨论】:

    • 您能详细说明我对事件的处理方式吗?
    • 唯一的问题是var不能作为类成员。
    • 所以将 var 更改为 ServiceReference2.Service1Client
    猜你喜欢
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 2011-07-26
    相关资源
    最近更新 更多