用户控件、事件与其和主页面的传递数据的问题 用户控件有个按钮,按钮有个功能,查询数据库得到DataTable主页面有个DataList。需要的功能是,点击这个按钮然后把结果绑定到DataList上。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 点击的按扭的时候,产生了点击事件,在事件处理函数里查询数据库,在数据查询出来,再放到datalist去,绑定 参考:《七道最经典的asp.net页面传值题》看看是第几种? 这个功能可以这样实现,因为你的按钮是在用户控件里面的,代码执行的顺序会是这样先是主页面Page_Load执行,然后是才是用户控件里面的Page_Load,最后才是按钮的事件,这样可以看出问题了,页面生成完以后才或去的,等于白搭,浪费了。用一个比较土的方法,你可以这么做先在你的用户控件里面定义全局变量用于存放你获取的DataTable,在定义一个属性或者方法,返回你的DataTable还有就是在主页面获取用户控件值比如说,我有个控件叫做 UC 你托到页面以后默认名是UC1你就在CS代码里面定义一个相同名称该控件类型的变量,那么你就可以直接用这个变量离开获取这个控件的值了定义方法:protected 项目名称.UC UC1;因为按钮是服务器控件,点击他不管有没有事件都会提交服务器,使用你可以在用户控件内写一个方法,去访问数据库,在主页面的Page_Load里面来调用它,并且返回所要的信息,进行绑定,但是这个方法也有个问题,第一次你没按按钮他也会给你显示出数据,想下就知道怎么回事了,但是你可以加上if(IsPostBack){} //不是!IsPostBack别看错啊来解决,这样第一就不会出现数据,其实你如果有根据条件来获取数据的话完全可以不用考虑这个问题,刚好有个项目碰到这种问题,帮你解决一下,应该可以解决你的问题了吧,呵呵 这问题我今天碰到了,告诉你关于我的解决方法:用户控件里有一按钮,依据条件查出相关信息,置于DataTable内,然后我用一个GetInfo()封装了一下。(楼上“代码执行的顺序会是这样:先是主页面Page_Load执行,然后是才是用户控件里面的Page_Load,最后才是按钮的事件”说的是对的),所以用户在点按钮时候,它外面的GridView或DataList已生成了,故:((GridView)this.Parent.FindControl("GridView1")).DataSource = GetInfo();((GridView)this.Parent.FindControl("GridView1")).DataBind();便可! repeater动态绑定内容,怎么实现? Checkbox单选 弱弱的问:使用输入参数的sql语句访问数据是不是一个参数只能在一个sql语句中使用? 自己写的AJAX和VS自带的AJAX控件。。 请问如何解决程序发布到互联网后session一分钟就丢失了。???(急急急) outputcache 问题 一个StreamWrite问题? 请高手帮忙! 急! js模拟点击按钮 关于日历控件,揭帖率100% 登陆失败? Set oIE=CreateObject("InternetExplorer.Application")在asp.net中怎么写? A标签的链拉问题?
《七道最经典的asp.net页面传值题》看看是第几种?
先在你的用户控件里面定义全局变量用于存放你获取的DataTable,在定义一个属性或者方法,返回你的DataTable
还有就是在主页面获取用户控件值
比如说,我有个控件叫做 UC 你托到页面以后默认名是UC1
你就在CS代码里面定义一个相同名称该控件类型的变量,那么你就可以直接用这个变量离开获取这个控件的值了
定义方法:protected 项目名称.UC UC1;因为按钮是服务器控件,点击他不管有没有事件都会提交服务器,使用你可以在用户控件内写一个方法,去访问数据库,在主页面的Page_Load里面来调用它,并且返回所要的信息,进行绑定,但是这个方法也有个问题,第一次你没按按钮他也会给你显示出数据,想下就知道怎么回事了,但是你可以加上
if(IsPostBack){} //不是!IsPostBack别看错啊
来解决,这样第一就不会出现数据,其实你如果有根据条件来获取数据的话完全可以不用考虑这个问题,刚好有个项目碰到这种问题,帮你解决一下,应该可以解决你的问题了吧,呵呵
用户控件里有一按钮,依据条件查出相关信息,置于DataTable内,然后我用一个GetInfo()封装了一下。
(楼上“代码执行的顺序会是这样:先是主页面Page_Load执行,然后是才是用户控件里面的Page_Load,最后才是按钮的事件”说的是对的),所以用户在点按钮时候,它外面的GridView或DataList已生成了,故:
((GridView)this.Parent.FindControl("GridView1")).DataSource = GetInfo();
((GridView)this.Parent.FindControl("GridView1")).DataBind();便可!