社区
C#
帖子详情
请教:关于web用户自定义控件的问题
missakissy
2005-10-28 04:31:50
我自定义了一个web控件,主要实现无刷新三级地区级联下拉。
当我在aspx页面上使用一个UC控件的时候正常,一旦定义2个以上那么只有第一个控件可用,其余都不行。我估计是因为定义多个控件时,控件里的javascript代码解析后就出现重复现象,导致不能正常使用。
请问有没有什么解决方法呢?
...全文
153
13
打赏
收藏
请教:关于web用户自定义控件的问题
我自定义了一个web控件,主要实现无刷新三级地区级联下拉。 当我在aspx页面上使用一个UC控件的时候正常,一旦定义2个以上那么只有第一个控件可用,其余都不行。我估计是因为定义多个控件时,控件里的javascript代码解析后就出现重复现象,导致不能正常使用。 请问有没有什么解决方法呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
missakissy
2005-10-31
打赏
举报
回复
在控件定义了一个javascript方法如下:
var AreaControlID;//控件id
function DistControlID(ControlID)
{
AreaControlID = ControlID;
}
当在page中定义多个这个用户控件时,我发现从第二个控件开始每个AreaControlID的值都是第一个控件的id,我想可能是这个全局变量的原因导致下面的控件不能正常使用。
请问有何解决办法呢?
missakissy
2005-10-31
打赏
举报
回复
楼上的可否说详细点啊,INamingContainer是个什么东西,该如何使用呢?
另外javascript需要改动么?
missakissy
2005-10-31
打赏
举报
回复
我现在在每个方法里都跟了一个控件id作为参数,能够解决问题,达到预期的目的。不过不知道这样会不会有什么弊端?
pupo
2005-10-31
打赏
举报
回复
所以你需要重新考虑 哪些脚本块可以公用就用RegisterClientScriptBlock输出一次,哪些不能公用的函数,变量,控件元素的就在前面加个this.UniqueID作为脚本中的唯一名称
pupo
2005-10-31
打赏
举报
回复
我怎么成星的,用不着你来郁闷。
RegisterStartupScript和RegisterClientScriptBlock只适合输出一些公用的的脚本,防止脚本被重复输出。如
<script language=javascript>
function AlertMsg(msg)
{
Alert(msg);
}
</script>
因为它只需要输出一次。
很多控件输出JavaScript脚本就是为了操作本控件内的元素或用输出的变量保持状态信息,所以并不实用,
INamingContainer可以,虽然有规律如ctl01,ctl2...,但是感觉麻烦,也不好控制。
所以可以直接在一下函数,变量,元素前面加上控件的唯一ID以与同类控件作区别
如
String scriptString = "<script language=JavaScript> function "+ this.UniqueID +"DoClick() {";
scriptString += "document.all."+ this.UniqueID +"show.value='Welcome to Microsoft .NET'}<";
scriptString += "/";
scriptString += "script>";
output.Write(scriptString);
output.Write("<input type='text' id='"+ this.UniqueID +"show'>");
output.Write("<input type='button' value='ClickMe' onclick='"+ this.UniqueID +"DoClick()'>");
saucer
2005-10-28
打赏
举报
回复
>>>我估计是因为定义多个控件时
让你的控件实现一个marker interface叫INamingContainer
public class YourControl : WebControl, INamingContainer
{
//...
}
这样就能保证不同控件里的子控件在客户端的ClientID都不一样,当然,这么做后,你的Javascript就要小心了,一般需要通过控件输出子控件的ClientID
以专业开发人员为伍
2005-10-28
打赏
举报
回复
使用RegisterStartupScript和RegisterClientScriptBlock,特别看看第一个参数的解释。
楼上这样回答问题也能星,我们郁闷死了。
jxufewbt
2005-10-28
打赏
举报
回复
那就不要用用户控件,用iframe
missakissy
2005-10-28
打赏
举报
回复
控件都加了ID,问题是function会重复出现,这样会不会导致使用无效呢?
pupo
2005-10-28
打赏
举报
回复
javascript 里面的变量函数,html元素的ID 都加一个控件ID的前缀,使之成为唯一
humin1906
2005-10-28
打赏
举报
回复
如果是javascript的原因,那你就去看看源文件,问题在哪,
按常理UC控件的多于少是不影响的
asp.net知识库
SqlDataSource
WEB
控件:当DeleteCommandType= 遭遇 ASP.NET 2.0 只读 TextBox 回发后信息丢失的 bug asp.net2.0:扩展ImageButton控件定制自己需要的功能 ASP.NET 2.0 正式版中无刷新页面的开发(示例代码的补充) ...
asp.net 快速引用
用户
自定义控件
技巧一例!
在其中一个ascx(定为A)里用标签语法加载另一个ascx(定为B),再在aspx文件中用标签语法加载定为A的ascx,显然就出错了,系统会提示同一目录下控件互相嵌套(
请教
这里的达人解决!!!)4. 如果将这两个ascx分别放在...
第六篇:ListView控件与DataPager控件详解(2)
第六篇:ListView控件与DataPager控件详解(2) 话接前文,今天的主要内容是如何实现嵌套数据,也就是父子表的格式。然后就是ListView的删除、插入、更新、排序。 ListView的操作 我们可以创建...
[原创]屏蔽.NET自定义开发组件中的属性
今天看见一个网友的留言:有一个
问题
请教
一下兄台,对于继承自microsoft的.net framework中现有的组件... 这个
问题
解决方法如下:第一步:在你的控件类中定义设计时中提供服务的类[Designer(typeof (MSPlus.
Web
.UI....
为什么RegisterClientScriptResource方法在
自定义控件
中的RenderContents期间不起作用?...
在做
Web
自定义控件
开发时,为了方便,经常会用到嵌入资源的方式来注册脚本文件, 奇怪的是,下面这段代码运行后在客户端没有看到注册的脚本文件, protectedoverridevoidRenderContents(HtmlTextWriteroutput) ...
C#
110,537
社区成员
642,576
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章