先代码:
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有什么不用 下面粉红色的又是什么意思呢?
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有什么不用 下面粉红色的又是什么意思呢?
<?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>
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() 的那一些数据
复制该 DataTable 的结构和数据。
返回值:新的 DataTable,它具有与该 DataTable 相同的结构(表架构和约束)和数据。
MSDN本来就是如此解释的。
for the method ToTable just returns a new DataTable instance, huh?