如果一个用户控件被多次调用,每次都会将不同的数据源绑定到用户控件里面的子控件,请问如何实现?

解决方案 »

  1.   

    多次,就是有很多次的意思,N次的意思.比如:一个用户控件UserControl,在Defualt.aspx被放置了三个,这三个其实是同一个用户控件,而不是我们平常的做法,放三个不同的用户控件.每次,就是单次的意思.比如:这三个UserControl的副本里面的子控件都必须指定不同的数据源.我想实现的效果就是,只写一个用户控件就可以随处调用,实现一个通用的用户控件,并且对这用户控件的功能进行多次开发,不断扩展,最终实现一个强大的,多功能的用户控件.
      

  2.   

    我晕!不过我明白了,你三次从同一用户控件的文件创建了三个实例。当话语从静态文件转到动态运行时内存对象的时候,我们说这是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个怎么处理。
      

  3.   

    上边应该是:
      ((abc)abc1).DataSource=d1;
      ((abc)abc2).DataSource=d2;
      ((abc)abc3).DataSource=d3;并且DataSource是写在用户控件abc.ascx或者其codebehind代码类上的接口属性代码。