用户控件有个按钮,按钮有个功能,查询数据库得到DataTable
主页面有个DataList。需要的功能是,点击这个按钮然后把结果绑定到DataList上。

解决方案 »

  1.   

    点击的按扭的时候,产生了点击事件,在事件处理函数里查询数据库,在数据查询出来,再放到datalist去,绑定
      

  2.   

    参考:
    《七道最经典的asp.net页面传值题》看看是第几种?
      

  3.   

    这个功能可以这样实现,因为你的按钮是在用户控件里面的,代码执行的顺序会是这样先是主页面Page_Load执行,然后是才是用户控件里面的Page_Load,最后才是按钮的事件,这样可以看出问题了,页面生成完以后才或去的,等于白搭,浪费了。用一个比较土的方法,你可以这么做
    先在你的用户控件里面定义全局变量用于存放你获取的DataTable,在定义一个属性或者方法,返回你的DataTable
    还有就是在主页面获取用户控件值
    比如说,我有个控件叫做 UC 你托到页面以后默认名是UC1
    你就在CS代码里面定义一个相同名称该控件类型的变量,那么你就可以直接用这个变量离开获取这个控件的值了
    定义方法:protected 项目名称.UC UC1;因为按钮是服务器控件,点击他不管有没有事件都会提交服务器,使用你可以在用户控件内写一个方法,去访问数据库,在主页面的Page_Load里面来调用它,并且返回所要的信息,进行绑定,但是这个方法也有个问题,第一次你没按按钮他也会给你显示出数据,想下就知道怎么回事了,但是你可以加上
    if(IsPostBack){} //不是!IsPostBack别看错啊
    来解决,这样第一就不会出现数据,其实你如果有根据条件来获取数据的话完全可以不用考虑这个问题,刚好有个项目碰到这种问题,帮你解决一下,应该可以解决你的问题了吧,呵呵
      

  4.   

    这问题我今天碰到了,告诉你关于我的解决方法:
    用户控件里有一按钮,依据条件查出相关信息,置于DataTable内,然后我用一个GetInfo()封装了一下。
    (楼上“代码执行的顺序会是这样:先是主页面Page_Load执行,然后是才是用户控件里面的Page_Load,最后才是按钮的事件”说的是对的),所以用户在点按钮时候,它外面的GridView或DataList已生成了,故:
    ((GridView)this.Parent.FindControl("GridView1")).DataSource = GetInfo();
    ((GridView)this.Parent.FindControl("GridView1")).DataBind();便可!