xml之DataGrid动态绑定条件数据

在看了<<asp.net+xml做论坛>>后,感谢作者给我学到了好多东西,但是,当我下载了作者的论坛代码后,感觉质量不是很高,结构没有体现出.net的 精髓.
我学习xml也只有一星期吧。所以,我想我还没有踏进门里,因为还有好多很基本的问题没有解决。在这里,我也会提出来,希望大家可以留言一起解决。

关于xml所要接触的类,还有类所包含了哪些方法,这里将不在总述。

现在,我将要做的是用datagrid绑定xml,

可以用:
DataSet ds=new DataSet();
ds.ReadXml(Mapath("file.xml"));
DataGrid.DataSource=ds;
DataGrid.DataBind();

很简单,这样就可以把xml绑定到DataGrid控件上了,而现在要的是,输出符合xpath语句的数据绑定到dataGrid上,实现方法可以用xsl实现,而现在要在DataGrid上实现,那要怎么样实现呢。
我想,就是将符合条件的xml数据动态生成Datatable,然后,就可以绑定输出了。

例如:
现在有个xml文件,cc.xml
<?xml version="1.0" encoding="utf-8" ?>
<nihao>
 <a id="1">
  <tian>haha</tian>
  <name>aaaa</name>
 </a>
 <a id="2">
  <tian>hehe</tian>
  <name>cccc</name>
 </a>
</nihao>

我们现在绑定数据,这是前台代码
<form id="Form1" method="post" runat="server">
   <asp:DataGrid ID="DataGrid" Runat="server"></asp:DataGrid>
   <asp:Button id="Button1"  runat="server"Text="Button"></asp:Button>
   <asp:TextBox id="TextBox1"  runat="server"></asp:TextBox>
   <asp:DataGrid id="DataGrid1" runat="server" ></asp:DataGrid>
   <asp:Label id="Label1"  runat="server">Label</asp:Label>
</form>
在这,我们用了2个DataGrid,一个用来显示全部数据,一个用来click button后生成的数据绑定。

好了,现在我们给出后台代码:
private void Button1_Click(object sender, System.EventArgs e)
  {
   string s=this.TextBox1.Text;
   System.Xml.XmlDocument Doc=new XmlDocument();
   Doc.Load(this.Server.MapPath("XMLFile1.xml"));
   System.Xml.XmlNodeList nodes=Doc.SelectNodes("//a/tian");

   foreach(XmlNode node in nodes)
   {
    if(node.InnerText==this.TextBox1.Text)
    {
     DataTable objTable = new DataTable("QueryResult");
     objTable.Columns.Add("id", Type.GetType("System.String"));
     objTable.Columns.Add("tian", Type.GetType("System.String"));
     objTable.Columns.Add("name", Type.GetType("System.String"));
   
     DataRow row=objTable.NewRow();
     row[0]=node.ParentNode.Attributes.GetNamedItem("id").Value;
     row[1]=2;
     row[2]=1;
     objTable.Rows.Add(row);
     this.DataGrid1.DataSource=objTable;
     this.DataGrid1.DataBind();
    }
    else
    {
     this.Label1.Text="没有你要的数据";
    }
   
   } 
  }

哈哈,大家也许看到了这几行吧:
row[0]=node.ParentNode.Attributes.GetNamedItem("id").Value;
     row[1]=2;
     row[2]=1;
本来是这样的:

 row[0]=node.ParentNode.Attributes.GetNamedItem("id").Value;
 row[1]=node.Attributes.GetNamedItem("tian").Value;

可是有报错,没有实例化tian

所以,这也是我要问的问题,大家可不要笑我呀。好了,今天就到这了。再见!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值