My XML file is as follows,

<state name ="Alaska">
 <Location Name="loc1">
  <Address>xyz</Address>
  <DateNTime>Saturday, Oct 2, 8pm</DateNTime>
 </Location>
 <Location Name="loc2">
  <Address>abc</Address>
  <DateNTime>Saturday, Oct 2, 10am</DateNTime>
 </Location>
</state>

In this way I have 50 states. Every state will be in dropdown list and on click of the state the different locations with their address and times need to be displayed in grid view. This is the code

private static IDictionary<string, Dictionary<string, Property>> dictionary;
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        XDocument doc = XDocument.Load(Server.MapPath("test2.xml"));

       dictionary = doc.Root.Elements("state").ToDictionary(
            state => state.Attribute("name").Value,
            state => state.Elements("Location").ToDictionary(
                location => location.Attribute("Name").Value,
                Property));

        var x = dictionary.Keys;
        DropDownList1.DataSource = x;
        DropDownList1.DataBind();
 }
}
public void OnSelectedIndexChanged(Object sender, EventArgs e)
{

    GridView1.DataSource = from item in dictionary[DropDownList1.SelectedItem.Text]
                           select new { col1 = item.Key, col2 = item.Value };
    GridView1.DataBind();

}

public class Property
{
  public string address;
  public string datetime;
}

Here I am not knowing exactly how to declare IDictionary and retrieve data accordingly. Can anyone explain me that??

有帮助吗?

解决方案

Try this:

dictionary = doc.Root.Elements("state").ToDictionary(
                s => s.Attribute("name").Value,
                s => s.Elements("Location").ToDictionary(
                    loc => loc.Attribute("Name").Value,
                    loc => new Property
                    {
                        address = loc.Element("Address").Value,
                        datetime = loc.Element("DateNTime").Value
                    }));
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top