如果一个用户控件被多次调用,每次都会将不同的数据源绑定到用户控件里面的子控件,请问如何实现?
如果一个用户控件被多次调用,每次都会将不同的数据源绑定到用户控件里面的子控件,请问如何实现? 问题点数:20、回复次数:4Top
1 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2006-11-04 18:45:33 得分 20
说清楚什么是“每次....”。搞不明白怎么才算“多次”。Top
2 楼yoshikage(3v3 AI电脑终于赢了!)回复于 2006-11-04 20:16:33 得分 0
多次,就是有很多次的意思,N次的意思.
比如:一个用户控件UserControl,在Defualt.aspx被放置了三个,这三个其实是同一个用户控件,而不是我们平常的做法,放三个不同的用户控件.
每次,就是单次的意思.
比如:这三个UserControl的副本里面的子控件都必须指定不同的数据源.
我想实现的效果就是,只写一个用户控件就可以随处调用,实现一个通用的用户控件,并且对这用户控件的功能进行多次开发,不断扩展,最终实现一个强大的,多功能的用户控件.Top
3 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2006-11-04 21:07:22 得分 0
我晕!
不过我明白了,你三次从同一用户控件的文件创建了三个实例。当话语从静态文件转到动态运行时内存对象的时候,我们说这是3个(独立)控件,就好像两个苹果长得一模一样味道也一样也是两个不同的苹果。
我想你如果意识到它们的实例是3个毫不相干的控件,应该对传递一个datatable之类的数据集和给它们没有什么怀疑吧,他们各自接受各自的参数。
例如,假设你从用户控件 abc.ascx(并且声明代码的后台代码的类型也是abc)三次拖入页面得到用户控件的ID分别为 abc1、abc2、abc3:
private DataTable _datas;
public DataTable DataSource{
get{
return _datas;
}
set{
_datas=value;
//创建或者绑定该重新创建或者重新绑定的控件
}
}
在页面上,假设要传递给第一个控件的数据是d1,第二个是d2,第三个为d3,那么可以写:
(abc)abc1.DataSource=d1;
(abc)abc2.DataSource=d2;
(abc)abc3.DataSource=d3;
就足够了。
其实,你会做一个用户控件并且在页面上放入一个,也就基本上会了。如果一个尚且没做好,不用担忧3个怎么处理。Top
4 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2006-11-04 21:09:57 得分 0
上边应该是:
((abc)abc1).DataSource=d1;
((abc)abc2).DataSource=d2;
((abc)abc3).DataSource=d3;
并且DataSource是写在用户控件abc.ascx或者其codebehind代码类上的接口属性代码。Top




