2011-05-03 96 views

回答

4

您必须从文件中读取数据,然后才能使用类似dataset.ReadXML()的东西,然后使用它为您的组合框设置绑定。

下面是一个让你开始的例子。 http://www.codeproject.com/KB/cs/dropdownfromxml.aspx

更新:请注意,有两个DataGrid类。具有DataBind()方法的位于System.Web.UI.WebControls命名空间中。窗体窗体控件不具有DataBind方法,应该没有该行。请参阅:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagrid.datasource.aspx

+0

我看到这个链接的例子,但我在最后一行datagrid.databind得到错误();和cnt找出错误 – anasooya 2011-05-03 05:26:30

+0

你可以发布你使用链接中的例子得到的错误吗? – KaeL 2011-05-03 05:48:52

+0

'System.Windows.Forms.DataGrid不包含'DataBind'的定义,并且没有找到接受'System.Windows.Forms.DataBind'类型的第一个参数的扩展方法'DataBind'(你是否缺少using指令或装配参考?) – anasooya 2011-05-03 06:19:52

7

使用XmlDocument类可以循环通过xml文件的节点,然后继续添加项目到dropdownlist。 示例代码:

XmlDocument doc = new XmlDocument(); 
    doc.Load(Server.MapPath("regis.xml")); 
    XmlNodeList colorList = doc.SelectNodes("Information/Comments/Name"); 
    foreach (XmlNode Name in colorList) 
    { 
     DropDownList1.Items.Add(Name.InnerText); 
    } 

编号: http://r4r.co.in/asp.net/01/tutorial/asp.net/How%20to%20populate%20combobox%20from%20xml%20file%20using%20c-Sharp%20in%20asp.net.shtml

+0

将相同的代码适用于Windows窗体应用程序 – anasooya 2011-05-03 05:19:47

+0

不是真的......我不是一个赢的表单开发人员,但我想逻辑应该是或多或少相同。循环文件,然后添加到组合框。做一些谷歌搜索。 – pramodtech 2011-05-03 05:32:44

+0

好吧,我知道了,但我的XML文件有点复杂,我无法理解如何选择节点,就像你发送的代码。 – anasooya 2011-05-03 06:25:41

2

鉴于这种XML

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <node1 attribute1="attrib1" attribute2="attrib2"> 
     <node2> 
      <node3>Item1</node3> 
      <node3>Item2</node3> 
      <node3>Item3</node3> 
     </node2> 
    </node1> 
</root> 

我们可以获取数据的几种方法。这个类有两个方法,第一个会遍历所有的节点,直到它到达我们想要的数据。第二个将使用XmlDocument.GetElementsByTagName()方法去我们想要的数据。

using System; 
using System.Xml; 
using System.Collections.Generic; 

public static class MyXmlParser 
{ 
    ///This method will loop through each node to get to the data we want. 
    public static List<string> GetItemsFromXmlByLoopingThroughEachNode(string Filename) 
    { 
     //Create a list to store all the items. 
     List<string> Items = new List<string>(); 

     //Load the document from a file. 
     XmlDocument doc = new XmlDocument(); 
     doc.Load(Filename); 

     //Loop through all the nodes in the document. 
     foreach(XmlNode RootNode in doc.ChildNodes) 
     { 
      if(RootNode.NodeType != XmlNodeType.XmlDeclaration) 
      {//If the node is not the declaration node parse it. 

       //Loop through all the child nodes of <root> 
       foreach(XmlNode Node1Node in RootNode.ChildNodes) 
       { 
        //Read Attributes of <node1> 
        XmlAttributeCollection attributes = Node1Node.Attributes; 
        XmlAttribute Attribute1 = attributes["attribute1"]; 
        //Attribute1.Value will give you the string contained in the attribute. 

        //Loop through all child nodes of <node1> 
        foreach(XmlNode Node2Node in Node1Node.ChildNodes) 
        { 
         //Loop through all child nodes of <node2> 
         foreach(XmlNode Node3Node in Node2Node.ChildNodes) 
         { 
          //These nodes contain the data we want so lets add it to our List. 
          Items.Add(Node3Node.InnerText); 
         } 
        } 
       }   
      } 
     } 
     //Return the List of items we found. 
     return Items; 
    } 

    ///This method will use GetElementsByTagName to go right to the data we want. 
    public static List<string> GetItemsFromXmlUsingTagNames(string Filename, string TagName) 
    { 
     //Create a list to store all the items. 
     List<string> Items = new List<string>(); 

     //Load the document from a file. 
     XmlDocument doc = new XmlDocument(); 
     doc.Load(Filename); 

     //Get all the <node3> nodes. 
     XmlNodeList Node3Nodes = doc.GetElementsByTagName(TagName); 
     //Loop through the node list to get the data we want. 
     foreach(XmlNode Node3Node in Node3Nodes) 
     { 
      //These nodes contain the data we want so lets add it to our List. 
      Items.Add(Node3Node.InnerText); 
     } 
     //Return the List of items we found. 
     return Items;  
    } 
} 

一旦你有你需要的数据,你可以添加项目到ComboBox

//Get the items from the XML file. 
List<string> Items = MyXmlParser.GetItemsFromXmlUsingTagNames("C:\\test.xml","node3"); 
//Add them to the ComboBox 
ComboBox1.Items.AddRange(Items.ToArray()) 

XmlDocument

XmlNodeList

XmlNode

XmlAttributeCollection

XmlAttribute