DataGrid и Silverlight - PullRequest
       34

DataGrid и Silverlight

0 голосов
/ 30 марта 2011

Я пытаюсь разработать приложение Silverlight, которое должно заполнять сетку данных из PHP. У меня PHP работает нормально с использованием формата JSON, и Silverlight может читать данные, но как я могу добавить эти данные в сетку данных. Я смотрел на добавление нового программного обеспечения, как вы можете в C # WF, используя DataRow, но это, кажется, не доступно в Silverlight.

Я недавно узнал, как я могу сделать это, создав класс, например Названные имена, в которых есть методы set. Затем используйте следующий код для создания источника данных для сетки данных

List<Names> source = new List<Names>();
                foreach (JsonValue item in arrayJson)
                {
                    string firstName = item["FirstName"].ToString().Replace('"', ' ').Trim();
                    string lastName = item["LastName"].ToString().Replace('"', ' ').Trim();
                    string age = item["Age"].ToString().Replace('"', ' ').Trim();

                    source.Add(new Names()
                    {
                        FirstName = firstName,
                        LastName = lastName,
                        Age = age
                    });

                    //MessageBox.Show("First Name: " + firstName + "\nLast Name: " + lastName + "\nAge: " + age, "Names", MessageBoxButton.OK);
                }
                tblGrid.ItemsSource = source;

Однако, когда этот код используется, он создает пустую строку для количества записей в базе данных без текста. Когда я отлаживаю его и смотрю в исходную коллекцию элементов, он показывает все правильные значения, но сетка данных показывает пустые строки.

Ответы [ 2 ]

0 голосов
/ 30 марта 2011

Исправлено: нужно было включить автогенерацию имен столбцов, просто нужно разобраться, как переименовать эти заголовки столбцов.

0 голосов
/ 30 марта 2011

Обычно я создаю POCO (обычный старый объект CLR или объект значения), а затем использую библиотеки JSON в DLL-библиотеках Silverlight .Net для анализа возврата JSON в коллекцию моих POCO. Как то так ...

using System.Json;

        public void DoArticleSearch()
    {
        WebClient proxy = new WebClient();
        proxy.OpenReadAsync(new Uri(uriString));
        proxy.OpenReadCompleted += (s, e) =>
        {
            if (e.Error != null)
            {
                string errorMsg = e.Error.Message;
            }
            JsonObject completeResult = (JsonObject)JsonObject.Load(e.Result);

            string jsonOffset = completeResult["offset"].ToString();
            string jsonTotal = completeResult["total"].ToString();

            JsonArray resultsArray = (JsonArray)completeResult["results"];

            ObservableCollection<Article> localArticles;
            if (Offset == 0)
            {
                localArticles = new ObservableCollection<Article>();
            }
            else
            {
                localArticles = Articles;
            }

            foreach (JsonObject obj in resultsArray)
            {
                Article a = new Article();
                if (obj.Keys.Contains("body"))
                {
                    a.Body = obj["body"];
                }
                if (obj.Keys.Contains("byline"))
                {
                    a.ByLine = obj["byline"];
                }
                if (obj.Keys.Contains("date"))
                {
                    a.Date = a.FormattedDateTime(obj["date"]);
                }
                if (obj.Keys.Contains("title"))
                {
                    a.Title = obj["title"];
                }
                if (obj.Keys.Contains("url"))
                {
                    a.Url = new Uri(obj["url"]);
                }
                localArticles.Add(a);
            }
            Articles = localArticles;
        };
    }

Приведенный выше пример не включает в себя все операторы using или определения свойств, которые используются в вызове метода. Метод находится в моей модели представления, а свойство Articles связано с визуальным элементом (сеткой данных) на реальной странице Silverlight.

Однако, если вы разрабатываете в Silverlight для Windows Phone, вам нужно будет использовать стороннюю библиотеку JSON.Net.

...