日期:2014-05-19  浏览次数:20405 次

|M| 第三贴: 数据绑定时不绑定某条件的行要怎么办 现在可以了,看看我理解的对不对
if   (e.Row.RowType   ==   DataControlRowType.DataRow)
{
        DataGrid   dg1   =   new   DataGrid();
        DataTable   dt   =   ((DataRowView)e.Row.DataItem).DataView.Table;
        dg1.DataSource   =   new   DataView(dt);
        dg1.DataBind();
        Page.Controls.Add(dg1);
}
像上面的代码以我的理解我一般是这样写的
dg1.DataSource   =   ((DataRowView)e.Row.DataItem).DataView.Table
取得当前DataRow.父级DataView.的Table   //这里好像是这个意思
但这样不行
DataTable   dt   =   ((DataRowView)e.Row.DataItem).DataView.Table;
dg1.DataSource   =   new   DataView(dt);
后来这是幕白兄的代码
以我的理解是这里多了一个new   DataView()
也就是得到那个Table的时候让他做一个新的DataView
因为如果不这样写的话绑定到dg1的还是原来的那个dv

最后再问一下:
是不是控件绑定的时候都是绑定到DataView这种形式如
dg.DataSource=dataset
dg.DataSource=datatable
dg.DataSource=dataview
上面的三条绑定的时候是不是自动变成
dg.DataSource=dataset.Table[0].dafdultview;
dg.DataSource=datatable.dafdultview;
dg.DataSource=dataview
这种形式,也就是说最后绑定的都是DataView

还有一个就是new   DataView(dt);
就新的一个dv的话那我用
DataTable   dt   =   ((DataRowView)e.Row.DataItem).DataView.Table;
DataView   dv1   =   dt.DefaultView;
也是应该可以的啊
是不是dt.DefaultView取到的是原来绑定的那个dv呢

------解决方案--------------------

------解决方案--------------------
up
------解决方案--------------------
像上面的代码以我的理解我一般是这样写的
dg1.DataSource = ((DataRowView)e.Row.DataItem).DataView.Table
取得当前DataRow.父级DataView.的Table //这里好像是这个意思
但这样不行
DataTable dt = ((DataRowView)e.Row.DataItem).DataView.Table;
dg1.DataSource = new DataView(dt);
后来这是幕白兄的代码
以我的理解是这里多了一个new DataView()
也就是得到那个Table的时候让他做一个新的DataView
因为如果不这样写的话绑定到dg1的还是原来的那个dv
--------------
正解

dg1.DataSource = new DataView(dt);
----------
邦定哪个表就看这句话,写上就把DataSource变成表dt了
显示的自然就是dt的内容

------解决方案--------------------
理解正确。 它会默认绑定它的defaultView.
------解决方案--------------------
上面的三条绑定的时候是不是自动变成
dg.DataSource=dataset.Table[0].dafdultview;
dg.DataSource=datatable.dafdultview;
dg.DataSource=dataview
这种形式,也就是说最后绑定的都是DataView

这个是很正确的。