怎么取得proID="1"(上一页取值)的ProjectPath信息绑定到DataGrid里?没有这个条件的我会做:可是取出了所有的ProjectPath值。
DataSet ds = new DataSet();
ds.ReadXml(ConfigDBPath.DBPath);
dgProjectPath.DataSource = ds.Tables[3];
dgProjectPath.DataBind();用DataTable.Select方法,会有问题,我取的是ds.Tables[3]的源,可是条件却在ds.Tables[1].Select("proID='"+projectID+"'")出现的。对应不上呀~ :(
用Xpath过滤的话,可以将XmlNodeList转化为DataSet格式?我需要与DataGrid绑定。
提点或者提供代码,非常感谢!XML如下:
<?xml version="1.0" standalone="yes"?>
<Tree xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <RootPath rooPath="D:\aspnet\WebLog\">
    <ProjectName proID="1" proName="logaaa">
      <Project>
        <ProjectPath proPathID="1" proPath="\xx" />
        <ProjectPath proPathID="2" proPath="\yy" />
      </Project>
      <Item>
        <ItemName iteID="1" iteName="bin">
          <itemPath>\aa</itemPath>
        </ItemName>
        <ItemName iteID="2" iteName="common">
          <itemPath>\bb</itemPath>
        </ItemName>
    </ProjectName>
    <ProjectName proID="2" proName="test">
      <Project>
        <ProjectPath proPathID="1" proPath="\zz" />
      </Project>
      <Item />
    </ProjectName>
  </RootPath>
</Tree>

解决方案 »

  1.   

    这个简单,你用DataSet先读出xml数据,然后去形成dataview。例如:
    DataView dv = new DataView( yourDataSet.Tables[yourTableName], ""proID='"+projectID+"'", null, DataViewRowState.CurrentRows);然后用此dv来绑定datagrid即可。
      

  2.   

    测试了一下还是不对。显示的不是ProjectPath节点的信息呀。DataSet ds = new DataSet();
    ds.ReadXml(ConfigDBPath.DBPath);
    projectID = Request.QueryString["projectID"].Trim();
    DataView dv = new DataView(ds.Tables[1],"proID='"+projectID+"'", null, DataViewRowState.CurrentRows);  //ds.Tables[1] 是ProjectName节点的,
    dgProjectPath.DataSource = dv;
    dgProjectPath.DataBind();
      

  3.   

    XmlDocument,Xmlreader的处理能力很强,没有看明白你最后要显示什么。
      

  4.   

    你简单说:
    上面的xml的文件,最终要显示成什么
      

  5.   

    当上一页传来的proID=1是,显示<Project>下的节点
    <ProjectPath proPathID="1" proPath="\xx" />
    <ProjectPath proPathID="2" proPath="\yy" />
    的信息,绑定DataGrid。与<Project>同级的<Item>节点也与它类似。
      

  6.   


    DataSet ds = new DataSet();
    ds.ReadXml(ConfigDBPath.DBPath);
    dgProjectPath.DataSource = ds.Tables[3];
    dgProjectPath.DataBind();显示的是所有的ProjectPath节点了:
    <ProjectPath proPathID="1" proPath="\xx" />
    <ProjectPath proPathID="2" proPath="\yy" />
    <ProjectPath proPathID="1" proPath="\zz" />我需要的是在<ProjectName proID="1">显示其下的
    <ProjectPath proPathID="1" proPath="\xx" />
    <ProjectPath proPathID="2" proPath="\yy" />
    两个节点信息就可以了,也不知如何做绑定。
      

  7.   

    to 测试了一下还是不对。显示的不是ProjectPath节点的信息呀。那你看看filter设置是否正确。
      

  8.   

    To Knight94(愚翁) : 按照你的方法写:
    DataSet ds = new DataSet();
    ds.ReadXml(ConfigDBPath.DBPath);
    projectID = Request.QueryString["projectID"].Trim();
    DataView dv = new DataView(ds.Tables[1],"proID='"+projectID+"'", null, DataViewRowState.CurrentRows);  //ds.Tables[1] 是ProjectName节点的,
    dgProjectPath.DataSource = dv;
    dgProjectPath.DataBind();结果为:   <ProjectName proID="1" proName="logaaa"> 的DataGrid信息,不是这个信息呀:(我要的就是这个) 
    <ProjectPath proPathID="1" proPath="\xx" />
    <ProjectPath proPathID="2" proPath="\yy" />
      

  9.   

    汗,还是自己解决了!
    public DataSet ReadProPath(string projectID)
    {
    XmlTextReader reader = new XmlTextReader(ConfigDBPath.DBPath);
    DataSet dataSet=null;
    while (reader.Read())
    {
    if (reader.NodeType == XmlNodeType.Element)
    {
    if (reader.LocalName == "ProjectName" && reader.GetAttribute("proID")==projectID && reader.Read())
    {
    dataSet = new DataSet();
    dataSet.ReadXml(reader);
    return dataSet;
    }
    }
    }
      

  10.   

    汗~好象发觉不对呀,这样的话,Item节点的信息就不知道怎么取了。~~~~~~~~~~~~~~~
    ~~~~~~~~大虾们出来吧!
      

  11.   

    应该是table取值不对造成的吧?我最近也用datalist来绑定数据也出现过类似的问题
    http://community.csdn.net/Expert/topic/4892/4892718.xml?temp=.6645166
      

  12.   

    你先试验下看看dataset.tables[0到直到这个数字运行后报错]和datagrid绑定!