2014-02-15 71 views
0

我有一個Json,如下所示: [{「Example temp」:「value」},{「Example Default」:「」,「selected」:true} ]使用Json Net和C#解析Json來填充下拉列表

我需要填充一個下拉說,例如: 下拉應包含值:實施例溫度 例默認

而實施例默認應默認選擇的值,

我嘗試下面的代碼:

JArray jArray = JArray.Parse(jsonstring); 

foreach (JObject jObject in jArray.Children<JObject>()) 
{ 
    foreach (JProperty jProperty in jObject.Properties()) 
    { 
    string name = jProperty.Name.Trim(); 
     string value = jProperty.Value.ToString().Trim(); 
     drpValues.Items.Add(new RadComboBoxItem(name, value)); 
    } 
} 

但是「selected」也作爲下拉值出現。

任何幫助,非常感謝。

非常感謝!

-PT

+0

你可以改變你的JSON格式?如果你可以把它改成''{「Text」:「Example temp」,「Value」:「SomeValue」},{「Text」:「Default Default」,「Value」:「」, 「selected」:true}]' – ekad

+0

感謝您的回覆ekad!如何使用此json填充下拉列表,請幫助!我用我的下拉填充邏輯這個JSON,現在我有我的下拉值作爲示例temp,Value,Text,Value – user2659046

回答

1

假設只有一個默認值,該代碼應工作

JArray jArray = JArray.Parse(jsonStr); 

bool isDefault; 
string defaultValue; 
foreach (JObject jObject in jArray.Children<JObject>()) 
{ 
    isDefault = false; 

    // check if current jObject contains a property named "selected" 
    // and if the value is true 
    JProperty p = jObject.Properties().SingleOrDefault(x => x.Name == "selected"); 
    if (p != null && (bool)p.Value == true) 
    { 
     isDefault = true; 
    } 

    foreach (JProperty jProperty in jObject.Properties()) 
    { 
     string name = jProperty.Name.Trim(); 
     string value = jProperty.Value.ToString().Trim(); 

     if (name != "selected") 
     { 
      drpValues.Items.Add(new RadComboBoxItem(name, value)); 
      if (isDefault) 
      { 
       defaultValue = value; 
      } 
     } 
    } 
} 

// set the dropdown selected item 
RadComboBoxItem itemToSelect = drpValues.FindItemByValue(defaultValue); 
itemToSelect.Selected = true; 
+0

這看起來不錯!在不更改Json的情況下尋找任何答案,希望爲用戶提供更少的Json以方便更新和減少混淆,非常感謝您的答覆。 – user2659046

+0

這可以在不改變Json的情況下完成嗎?謝謝! – user2659046

+0

看到編輯的答案,我想這就是你要找的。 – ekad