先代码:
if (!IsPostBack)
        {
            DataTable dt = Xml.XmlToDataTable("Xml/menu.xml");//读取xml到datatable中
            DataTable dtType = dt.Copy().DefaultView.ToTable(true, "type");//选择DataTable等数据源中的唯一值
            dlType.DataSource = dtType;
            dlType.DataBind();
            foreach (DataListItem di in this.dlType.Items)//datalistitem 引用变量 不可操作!this.dltype.item 数据表的项可操作
            {
                Label lblType = di.FindControl("lblType") as Label;
                DataList dlDetail = di.FindControl("dlDetail") as DataList;
                DataView dv = dt.Copy().DefaultView;
                dv.RowFilter = "type='" + lblType.Text.Trim() + "'";

                dv.Sort = "name asc";
                dlDetail.DataSource = dv;
                dlDetail.DataBind();
            }这是pageload的代码,红色标记的两个datatable有什么不用  下面粉红色的又是什么意思呢?

解决方案 »

  1.   

    粉红色的筛选出符合你条件的数据红色的  你看下ToTable(true, "type");//是有什么意思吧
      

  2.   

    为了不影响原有数据集,做了一个副本copy
      

  3.   

    这个事xml的内容,好像和这个有关系
    <?xml version="1.0" encoding="utf-8" ?>
    <hc>
      <row>
        <type>弘创-空充</type>
        <name>解冻</name>
        <detail>解除代理商冻结钱包对应金额</detail>
        <url>KC/PlusAmount.aspx?return=hc</url>
      </row>
      <row>
        <type>凯博-空充</type>
        <name>解冻</name>
        <detail>解除代理商冻结钱包对应金额</detail>
        <url>KC/PlusAmount.aspx?return=kb</url>
      </row>
      <row>
        <type>凯博-空充</type>
        <name>冲正返款</name>
        <detail>
          联通(讯源:如电信充值)实际已冲正成功,我方系统未做冲正处理
        </detail>
        <url>KC/TreversalBackMoney.aspx?return=kb</url>
     
    </row>
      
    </hc>
      

  4.   

    你的意思是说 两个datatable的数据内容是一样的了?
      

  5.   

    至少在copy的那一刻数据是一致的
      

  6.   

    dtType是只返回dt的"type"那一列而已,就是说第二个table得到的是一个新的DataTable,这个DateTable只包含dt的“type”这一列的数据。
    Label lblType = di.FindControl("lblType") as Label;// 找到lblType并委婉转换为Label控件
     DataList dlDetail = di.FindControl("dlDetail") as DataList;// 找到dlDetail并委婉转换为DataList控件
     DataView dv = dt.Copy().DefaultView;// 拷贝dt,并返回副本的DefaultView
     dv.RowFilter = "type='" + lblType.Text.Trim() + "'";// 筛选dv里的数据,只取type这一字段等于lblType这个Label控件的文本内容(去掉前面空格),说白了就是筛选type等于lblType.Text.Trim() 的那一些数据
     
      

  7.   

    DataTable.Copy 方法就是拷贝一个副本,至于副本是什么,玩网游多了自然就不用解释了……
      

  8.   

    DataTable.Copy 方法
    复制该 DataTable 的结构和数据。
    返回值:新的 DataTable,它具有与该 DataTable 相同的结构(表架构和约束)和数据。
    MSDN本来就是如此解释的。
      

  9.   

    Thought needn't use Copy function, 
    for the method ToTable just returns a new DataTable instance, huh?