2011-03-29 129 views
0

我想開發一個Silverlight應用程序,它需要從php填充數據網格。我使用JSON格式的PHP可以正常工作,Silverlight可以讀取數據,但是如何將這些數據添加到數據網格中。我正在尋找像使用DataRow一樣在C#WF中以編程方式添加新內容,但這在Silverlight中似乎不可用。DataGrid和Silverlight

我該怎麼做。任何幫助,這將不勝感激。

編輯 我最近發現瞭如何通過創建一個類如稱爲名稱,其中已經設置了方法。然後使用下面的代碼來創建數據源爲DataGrid

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; 

然而,當這個代碼是用它創建一個空白行用於記錄在數據庫中沒有的文字數量。當我調試它時,我查看源項目集合中的內容,它顯示所有正確的值,但datagrid顯示空白行。

感謝

回答

0

我通常會創建一個POCO(普通老式CLR對象 - 或值對象),然後使用Silverlight的淨DLL文件的JSON庫解析JSON回到我波蘇斯的集合。事情是這樣的......

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頁面上的可視元素(數據網格)。

但是,如果您正在爲Windows Phone開發Silverlight,則需要使用第三方JSON.Net庫。

0

修復它,需要啓用自動生成列名稱只需要解決如何重命名這些列標題。