上次有一相于用户控件中包括DataGrid控件的一个问题,在网上找了些资料给的答复如下
//============================================================
如果用户控件中包括DataGrid控件,那么加载控件后可能出现不响应DataGrid事件的问题。
这好像是一个bug,必须要将加载的控件进行强制转换,如:
Test userControl=(Test)Page.LoadControl(“Test.ascx”);
注意:上面使用的是Test类型,而不是Control!
我在以前的Blog中曾提到过这个问题,这种方式将使系统的扩展性降低。 我有一个解决方案可以和大家讨论(运用策略模式):
public class BaseControl : System.Web.UI.UserControl
{
public virtual BaseControl ProcessThisControl();
}
所有的用户控件从BaseControl 继承,如果有Datagrid控件,由overide ProcessThisControl方法 ,如:
return this as Test;
按如下方式加载控件:
BaseControl userControl=(BaseControl )Page.LoadControl(“Test.ascx”);
userControl.ProcessThisControl();
//============================================================
呵呵,看了之后还是没看懂, 有哪位朋友可以说的清楚一点吗
//============================================================
如果用户控件中包括DataGrid控件,那么加载控件后可能出现不响应DataGrid事件的问题。
这好像是一个bug,必须要将加载的控件进行强制转换,如:
Test userControl=(Test)Page.LoadControl(“Test.ascx”);
注意:上面使用的是Test类型,而不是Control!
我在以前的Blog中曾提到过这个问题,这种方式将使系统的扩展性降低。 我有一个解决方案可以和大家讨论(运用策略模式):
public class BaseControl : System.Web.UI.UserControl
{
public virtual BaseControl ProcessThisControl();
}
所有的用户控件从BaseControl 继承,如果有Datagrid控件,由overide ProcessThisControl方法 ,如:
return this as Test;
按如下方式加载控件:
BaseControl userControl=(BaseControl )Page.LoadControl(“Test.ascx”);
userControl.ProcessThisControl();
//============================================================
呵呵,看了之后还是没看懂, 有哪位朋友可以说的清楚一点吗
解决方案 »
- sql如何给结果集增伪序号列
- 关于YetAnotherForum论坛源代码
- CheckBox怎么设置值而不显示
- 动态加载用户控件 其中的验证控件没有工作
- SiteMapPath怎么操作?求教
- dataview与 dataset 抉择
- 为什么winform的datagrid在设置DataSource后只是显示有三行,而看不到有三行中的1,2,3?
- 请教:不能打开web项目提示出错的解决方法(解决马上结帐)
- 求救!!下周就自学考试了,我的身份证丢了,怎么办
- treeview节点的分层问题?请高手指点
- 在asp.net中读取xml文件遇到的问题
- 往Dropdownlist绑定数据时我只需要其中部分记录行的数据如何解决
我看到了一个网站 100MB asp和 asp.net空间 现在促销,
同学们可以做一个简单的个人网站用来找工作 ,
支持 asp.net 一年才50元!不要错过哦!!!
速度非常快,一般公司企业 足够用了!
http://www.hi876.com
希望能对大家有帮助
Test userControl=(Test)Page.LoadControl(“Test.ascx”);
但是偷运了
BaseControl userControl=(BaseControl)Page.LoadControl(“Test.ascx”); 可见“这种方式将使系统的扩展性降低”乃莫须有的罪名。需要明确类型转换是经常的事。软件开发不是做学问。做学问,可以固执批判其它理论不符合规定而放弃使用,但是实际应用中如果共享别人的工具就要容忍别人的接口并且转换为自己的接口。
BaseControl userControl=(BaseControl)Page.LoadControl(“Test.ascx”);
((Test)userControl).DoTest();
这样反而增加了一层。