|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
这个是很正确的。