日期:2014-05-18  浏览次数:20727 次

在XML中使用RowFilter怪问题,请高手帮解答。我为此困惑了一周了。
我得XML有两个表,如ID是1、2、3、4顺序的使用没问题,但如果改成ID=1、2、4、5时那么在通过RowFilter过滤所得的数据就出问题了,1、2的正常显示4是调用5的数据5没有显示。我通过调试,RowFilter传递的参数没有问题。

我得RowFilter的使用方法如下
      GridView   gvChild   =   (GridView)e.Row.FindControl( "gvChild ");
                        Label   lblID   =   (Label)e.Row.FindControl( "lblID ");
                //lblID是主表ID的绑定值
                        DataSet   ds   =   new   DataSet();
                        ds.ReadXml(Server.MapPath( "db_kh.xml "));
                        DataView   vd   =   new   DataView(ds.Tables[0]);
                        vd.RowFilter   =   "ID= ' "   +   lblID.Text   +   " ' ";
                        gvChild.DataSource   =   vd;
                        gvChild.DataBind();
      上面这段调用第一个表的方法,什么情况下都没有问题都很正常。
      下面这段代码在调用表二时就出现了,这个问题:“如ID是1、2、3、4顺序的使用没问题,但如果改成ID=1、2、4、5时那么在通过RowFilter过滤所得的数据就出问题了,1、2的正常显示4是调用5的数据5没有显示。我通过调试,RowFilter传递的参数没有问题。”
            protected   void   gvChild_RowDataBound(object   sender,   GridViewRowEventArgs   e)
        {
                if   (e.Row.RowType   ==   DataControlRowType.DataRow)
                {
                        GridView   gvlink   =   (GridView)e.Row.FindControl( "gvlink ");
                        Label   lblID   =   (Label)e.Row.FindControl( "lblID ");
                 
                        string   id=gvParent.DataKeys[e.Row.ID].Value;
                        DataSet   dl   =   new   DataSet();
                        dl.ReadXml(Server.MapPath( "db_kh.xml "));

                        DataView   vdl   =   new   DataView(dl.Tables[1]);
                        vdl.RowFilter   =   "User_id= ' "   +   lblID.Text   +   " ' ";
                        gvlink.DataSource   =   vdl;  
                        gvlink.DataBind();
                }
        }

XML文件如下:
这样时就没有问题
<?xml