一个很简单的xml文件
<?xml version="1.0" encoding="gb2312" ?>
<jobItems name ="job">
<item>总经理</item>
<item>副总经理</item>
</jobItems>现在要用dropdownlist绑定这个xml文件,然后让dropdownlist里面可以选择“总经理”和“副经理”就可以了,希望能够用两种方式实现:
1.XMLDataSource控件,如何设置XPath?
2.直接写在.cs文件中,用程序代码,就像连接数据库那样
各位大虾能否各给一个DEMO看看

解决方案 »

  1.   

    string xmlPath = Server.MapPath("你xml文件的路径");
                XmlDataDocument xmlDoc = new XmlDataDocument();
                xmlDoc.Load(xmlPath);
                XmlNodeList nodeList = xmlDoc.DocumentElement.ChildNodes;
                foreach (XmlNode node in nodeList)
                {
                    this.DropDownList1.Items.Add(new ListItem(node.InnerText, node.InnerText));
                }
      

  2.   

    Crazy__Bear() ,你的方法应该是从xml读出数据然后逐个添加到drop控件的,我希望的最好是把xml做为数据库类似性质的源,然后绑定(DataBind)到drop控件
      

  3.   

    DataSet ds = new DataSet();
       ds.ReadXml(Server.MapPath("yourxml.xml"));
       dropdownlist.DataSource = ds;
       dropdownlist.DataBind();//如果有多个节点,则需要指定TextField和ValueField.
      

  4.   

    那如何用XMLDataSource控件实现?
      

  5.   

    你要注意你的系统是否可以对XML文件进行读写呀!NTFS格式的盘是不允许,你给ASP.NET足够的权限!
      

  6.   

    vampireal(oo0O0oo),请问按照我的xml文件如何指定TextField和ValueField,现在我绑定之后什么数据也没有啊,能否给一个demo
      

  7.   

    简单啊
    public static void ListBinding(Control ConName)
    {
    XmlDocument doc = new XmlDocument();
    doc.Load(HttpContext.Current.Request.PhysicalApplicationPath+@"Xml\Purpose.xml");
    XmlNodeList t = doc.SelectNodes("//purposes/name");
    XmlNodeList v = doc.SelectNodes("//purposes/code");
    ArrayList Ilst=new ArrayList();
    Ilst.Add(new ListItem("请选择目的","0"));
    for (int i = 0; i <t.Count; i++)
    {
    Ilst.Add(new ListItem(t[i].InnerText,v[i].InnerText));
    } DataTable dt = new DataTable();
    DataColumn dc = new DataColumn("text",typeof(System.String));
    dt.Columns.Add(dc);
    dc = new DataColumn("value",typeof(System.String));
    dt.Columns.Add(dc);
    for(int i=0;i<Ilst.Count;i++)
    {
    DataRow dr = dt.NewRow();
    dr["text"] = String.Format(((ListItem)Ilst[i]).Text);
    dr["value"] = String.Format(((ListItem)Ilst[i]).Value);
    dt.Rows.Add(dr);
    }
    if (ConName is DropDownList)
    {
    ((DropDownList)ConName).DataTextField = "text";
    ((DropDownList)ConName).DataValueField = "value";
    ((DropDownList)ConName).DataSource= dt;
    ((DropDownList)ConName).DataBind();
    }
    if (ConName is ListBox)
    {
    ((ListBox)ConName).DataTextField = "text";
    ((ListBox)ConName).DataValueField = "value";
    ((ListBox)ConName).DataSource= dt;
    ((ListBox)ConName).DataBind();
    }
    dt.Dispose();
    }
      

  8.   

    http://blog.csdn.net/cui2nd/archive/2005/12/20/557315.aspx
      

  9.   

    DataSet ds = new DataSet();
            ds.ReadXml(Server.MapPath("urpath"));
            string textField = ds.Tables[0].DefaultView.Table.Columns[0].ColumnName;
            d1.DataSource = ds.Tables[0].DefaultView;
            d1.DataTextField = textField;
            d1.DataBind();这样就可以了,上面的绑定给写错了-_-!
    你的xml文件中需要改成这样
    <?xml version="1.0" encoding="gb2312"?>
    <jobItems>
      <item>总经理</item>
      <item>副总经理</item>
    </jobItems>
    那个name属性需要去掉,否则直接通过dataset取的数据源会出问题.另外,这种xml绑定灵活性很差,建议使用xpath来实现复杂的xml查询绑定(或者自己构造XML操作类)