日期:2014-05-18  浏览次数:20376 次

用户控件、事件与其和主页面的传递数据的问题
用户控件有个按钮,按钮有个功能,查询数据库得到DataTable
主页面有个DataList。

需要的功能是,点击这个按钮然后把结果绑定到DataList上。

------解决方案--------------------
点击的按扭的时候,产生了点击事件,在事件处理函数里查询数据库,在数据查询出来,再放到datalist去,绑定
------解决方案--------------------
参考:
《七道最经典的asp.net页面传值题》

看看是第几种?
------解决方案--------------------
这个功能可以这样实现,因为你的按钮是在用户控件里面的,代码执行的顺序会是这样先是主页面Page_Load执行,然后是才是用户控件里面的Page_Load,最后才是按钮的事件,这样

可以看出问题了,页面生成完以后才或去的,等于白搭,浪费了。用一个比较土的方法,你可以这么做
先在你的用户控件里面定义全局变量用于存放你获取的DataTable,在定义一个属性或者方法,返回你的DataTable
还有就是在主页面获取用户控件值
比如说,我有个控件叫做 UC 你托到页面以后默认名是UC1
你就在CS代码里面定义一个相同名称该控件类型的变量,那么你就可以直接用这个变量离开获取这个控件的值了
定义方法:protected 项目名称.UC UC1;

因为按钮是服务器控件,点击他不管有没有事件都会提交服务器,使用你可以在用户控件内写一个方法,去访问数据库,在主页面的Page_Load里面来调用它,并且返回所要的信息,进行绑定,但是这个方法也有个问题,第一次你没按按钮他也会给你显示出数据,想下就知道怎么回事了,但是你可以加上
if(IsPostBack){} //不是!IsPostBack别看错啊
来解决,这样第一就不会出现数据,其实你如果有根据条件来获取数据的话完全可以不用考虑这个问题,刚好有个项目碰到这种问题,帮你解决一下,应该可以解决你的问题了吧,呵呵